簡述
內容具體分為兩種分為上傳和下載部分,服務搭載仍然選擇IIS,內容還是相對簡單,只是內部使用,沒有使用太多的優化的技巧,net環境為4.7
上傳服務
上傳需要注意的是,HttpPostedFileBase 不支持大文件傳輸,文件達到几M的時候就會溢出,所以需要修改web.config,拓展到1g大小
<system.webServer><handlers><remove name="ExtensionlessUrlHandler-Integrated-4.0" /><remove name="OPTIONSVerbHandler" /><remove name="TRACEVerbHandler" /><add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /></handlers><security><requestFiltering><!-- 单位:字节(1000M) --><requestLimits maxAllowedContentLength="1048576000" /></requestFiltering></security></system.webServer><system.webServer><httpProtocol><customHeaders><add name="Access-Control-Allow-Origin" value="*" /><add name="Access-Control-Allow-Headers" value="*" /><add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" /></customHeaders></httpProtocol></system.webServer>
參考代碼如下
public string UploadFile(String project,String stage,string item,string mc,string type,string fileid, HttpPostedFileBase file){string msg = "";if (file != null && file.ContentLength > 0){// 返回成功消息msg = "文件上传成功";}else{// 返回错误消息msg = "请选择要上传的文件";}return msg;}
下載
下載部分更為簡單,指定服務器的文件所在目錄,可以非常簡單實現文件下載
public string download(String project, String stage, string item, string mc, string type, string fileid,string filename){//Uploads/ok2build/All/TI/SMT前段Process FMEA/通訊錄.xlsstring filePath = Server.MapPath("~/Uploads"+"/"+type+"/"+stage+"/"+mc+"/"+project+"/"+item+"/"+filename);//路径FileInfo fileinfo = new FileInfo(filePath);Response.Clear(); //清除缓冲区流中的所有内容输出Response.ClearContent(); //清除缓冲区流中的所有内容输出Response.ClearHeaders(); //清除缓冲区流中的所有头Response.Buffer = true; //该值指示是否缓冲输出,并在完成处理整个响应之后将其发送Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);Response.AddHeader("Content-Length", fileinfo.Length.ToString());Response.AddHeader("Content-Transfer-Encoding", "binary");Response.ContentType = "application/unknow"; //获取或设置输出流的 HTTP MIME 类型Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); //获取或设置输出流的 HTTP 字符集Response.TransmitFile(filePath);return "OK";}