上传ftp服务器上的文件时出错
请帮帮我,我有一个很大的问题。上传ftp服务器上的文件时出错
我想上传一个使用asp.net c#的godaddy ftp服务器上的文件。当我在Visual Studio中运行应用程序时,该文件在ftp服务器上成功创建,但是当我使用诸如(www.domain/page.aspx)之类的URL创建此文件时,我得到以下错误(使用asp.net 4.0):
无法连接到远程服务器
当我使用asp.net 3.5我得到这个错误:
请求类型的权限“System.Net.WebPermission ,System,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'失败。
请帮帮我。
确保您正在使用有权访问FTP的凭据。此外,您的网址可能类似ftp://www.domain.com/
以下是我过去使用的一些FTP代码。
public class FTP
{
private String Username { get; set; }
private String Password { get; set; }
private String Host { get; set; }
private Int32 Port { get; set; }
public FTP(String username, String password, String host, Int32 port)
{
Username = username;
Password = password;
Host = host;
Port = port;
}
private Uri BuildServerUri(string Path)
{
return new Uri(String.Format("ftp://{0}:{1}/{2}", Host, Port, Path));
}
/// <summary>
/// Upload a byte[] to the FTP server
/// </summary>
/// <param name="path">Path on the FTP server (upload/myfile.txt)</param>
/// <param name="Data">A byte[] containing the data to upload</param>
/// <returns>The server response in a byte[]</returns>
private byte[] UploadData(string path, byte[] Data)
{
// Get the object used to communicate with the server.
WebClient request = new WebClient();
try
{
// Logon to the server using username + password
request.Credentials = new NetworkCredential(Username, Password);
return request.UploadData(BuildServerUri(path), Data);
}
finally
{
if (request != null)
request.Dispose();
}
}
/// <summary>
/// Load a file from disk and upload it to the FTP server
/// </summary>
/// <param name="ftppath">Path on the FTP server (/upload/myfile.txt)</param>
/// <param name="srcfile">File on the local harddisk to upload</param>
/// <returns>The server response in a byte[]</returns>
public byte[] UploadFile(string ftppath, string srcfile)
{
// Read the data from disk
FileStream fs = new FileStream(srcfile, FileMode.Open);
try
{
byte[] FileData = new byte[fs.Length];
int numBytesToRead = (int)fs.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to numBytesToRead.
int n = fs.Read(FileData, numBytesRead, numBytesToRead);
// Break when the end of the file is reached.
if (n == 0) break;
numBytesRead += n;
numBytesToRead -= n;
}
numBytesToRead = FileData.Length;
// Upload the data from the buffer
return UploadData(ftppath, FileData);
}
finally
{
if (fs != null)
fs.Close();
if (fs != null)
fs.Dispose();
}
}
}
感谢您的帮助,但我得到了同样的错误(无法连接到远程服务器) –
您能通过命令行连接并传输文件吗? http://kb2.adobe.com/cps/164/tn_16418.html – Mark
我知道命令行,但我的项目需要使用从url请求的asp.net创建文件和文件夹,感谢您的帮助。 –
我使用此代码上传文件//的FtpWebRequest FTPReq1 =(的FtpWebRequest)FtpWebRequest.Create( “ftp://domain.com/” + FileUpload1.FileName); //FTPReq1.UseBinary = true; //FTPReq1.Credentials = new NetworkCredential(“username”,“pass”); //FTPReq1.Method = WebRequestMethods.Ftp.UploadFile; // FtpWebResponse fres1 =(FtpWebResponse)FTPReq1.GetResponse(); –