保存文件到ftp服务器
本文关键字:服务器 ftp 保存文件 | 更新日期: 2023-09-27 18:11:34
我正在用asp.net和c#创建一个文件上传器。我只是想把上传的文件直接保存到ftp服务器上。这可能吗?如果可能的话,我如何设置ftp服务器的身份验证信息。
(127.0.0.1只是一个例子。我写不出我的真实ip。我必须使用HTTP协议获取文件。我们的一些客户isp不支持ftp。这是主要问题。
protected void submit_button_Click(object sender, EventArgs e)
{
string filename = Path.GetFileName(upload_file.FileName);
string fileExt = Path.GetExtension(upload_file.FileName);
if (fileExt == ".csv")
{
string folder = Server.MapPath("ftp://127.0.0.1/uploads/");
upload_file.SaveAs(folder + "/" + filename);
ltr.Text = "Successful.";
}
else
{
upload_file.BorderColor = System.Drawing.Color.Red;
ltr.Text = "File type must be .csv.";
}
}
这很简单。下面的方法只传递文件名。显然要改变StreamReader中的目录。
编辑:对不起,我注意到你说你的客户端不支持FTP,所以下面的内容不起作用
public bool ftpTransfer(string fileName)
{
try
{
string ftpAddress = "127.0.0.1";
string username = "user";
string password = "pass";
using (StreamReader stream = new StreamReader("C:''" + fileName))
{
byte[] buffer = Encoding.Default.GetBytes(stream.ReadToEnd());
WebRequest request = WebRequest.Create("ftp://" + ftpAddress + "/" + "myfolder" + "/" + fileName);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);
Stream reqStream = request.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();
}
return true;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return false;
}
}
编辑:重制文件名。
string filepath = "~/txtfile/";//this is folder name wher you want to save the file
HttpFileCollection uploadedFiles = HttpContext.Current.Request.Files;
for (int i = 0; i < uploadedFiles.Count; i++)
{
HttpPostedFile userPostedFile = uploadedFiles[i];
if (userPostedFile.ContentLength == 0)
{
continue;
}
userPostedFile.SaveAs(Server.MapPath(filepath) + userPostedFile.filename);
} //save file on the server