簡述
內容具體分為兩種分為上傳和下載部分,服務搭載仍然選擇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/通訊錄.xls
string 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";
}