Http上传 vs Ftp上传
1:Http上传
http上传就是通过http协议来向服务器上传文件,所以服务器端应该有一个处理客户端请求的页面。
添加一个FileUploadHandler.ashx的文件来处理客户端请求。代码如下:
?
/// <summary>/// FileUploadHandler 的摘要说明/// </summary>public class FileUploadHandler : IHttpHandler{private const string UPLOAD_RESOURCES_FOLDER_NAME = "UploadResources";public void ProcessRequest(HttpContext context){foreach (string fname in context.Request.Files.AllKeys){string guidFileName = Guid.NewGuid().ToString();HttpPostedFile file = context.Request.Files[fname];file.SaveAs(context.Server.MapPath("~/" + UPLOAD_RESOURCES_FOLDER_NAME) +"//" + guidFileName + file.FileName);Uri addressUri = context.Request.Url;string httpFilePath = string.Format("{0}://{1}/{2}/{3}",addressUri.Scheme,addressUri.Authority,UPLOAD_RESOURCES_FOLDER_NAME,guidFileName + file.FileName);context.Response.Write(httpFilePath);}}public bool IsReusable{get{return false;}}}
?
这段代码主要是获取客户端请求的Files,然后调用SaveAs方法保存到服务器端得UploadResources文件夹下,
接着返回一个http的路径给客户端。
?
上传的代码如下:
?
2:Ftp上传
首先需要新建Ftp站点:
可以使用工具创建,也可以使用iis来创建Ftp站点,在这里我使用iis来承载。
?
创建好Ftp站点后,假设
站点地址是:ftp://192.168.0.11/
用户名是:WQ,
密码是:123456.
?
那么上传的代码如下:
public static void Main(){WebClient webClient = new WebClient();webClient.Credentials = new NetworkCredential("WQ", "123456");string ftpUrl = "ftp://192.168.0.11";string fileName = "c:\\test.txt";string uploadFilePath = string.Format("{0}{1}{2}",ftpUrl,DateTime.Now.ToString("yyyyMMddHHmmss"),Path.GetFileName(fileName));webClient.UploadFile(uploadFilePath, fileName);}
?
上面两个示例是介绍如何上传的,下面我对这两种方式做一下比较:
?
?
上传大文件:
?
?