文件上传及下载

APIFileHelp  辅助类

public string[] ExtentsfileName = new string[] { ".doc", ".xls", ".png", ".jpg" };

//保存的文件夹
public string UrlPath = "/Upload/";

 

/// <summary>
///响应对象 ,使用前先赋值
/// </summary>
public HttpResponse Response = HttpContext.Current.Response;
public HttpRequest Request = HttpContext.Current.Request;

 

//上传文件

public FileResult UpLoad()
{
if (Request.Files.Count > 0)
{
var file = Request.Files[0];
var extenfilename = Path.GetExtension(file.FileName);
//判断 路径是否存在
string path = HttpContext.Current.Server.MapPath(UrlPath);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}

if (ExtentsfileName.Contains(extenfilename.ToLower()))
{
string urlfile = UrlPath + DateTime.Now.ToFileTime() + extenfilename;
string filepath = HttpContext.Current.Server.MapPath(urlfile);
file.SaveAs(filepath);
return new FileResult() { Code = 0, Msg = "上传成功", Url = urlfile };
}
else
{
return new FileResult() { Code = -1, Msg = "只允许上传指定格式文件" + string.Join(",", ExtentsfileName), Url = "" };
}
}
else
{
return new FileResult() { Code = -1, Msg = "不能上传空文件", Url = "" };
}
}

 

//下载后保存名

public void DownLoad(string downFileName, string sourceFileName)
{
if (File.Exists(sourceFileName))
{
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", downFileName));
Response.Charset = "GB2312";
Response.ContentEncoding = Encoding.GetEncoding("GB2312");
Response.ContentType = MimeMapping.GetMimeMapping(downFileName);
Response.WriteFile(sourceFileName);
Response.Flush();
Response.Close();
}
}

 

public class FileResult
{
public int Code { get; set; }
public string Msg { get; set; }
public string Url { get; set; }
}

 

---------------------------------------------------------------------------------------------------

//上传的控制器方法

APIFileHelp help = new APIFileHelp();


[HttpPost]
public FileResult UpLoad()
{
return help.UpLoad();
}

 

js代码 上传文件代码

< script >
function ff()
{
var formData = new FormData();

//注:f1  ID 为前台上传文件的ID
var file = document.getElementById("f1").files[0];
formData.append("fileInfo", file);
$.ajax({
url: "https://localhost:44370/api/FileOperation/UpLoad",  //需要修改控制器方法
type: "POST",
data: formData,
contentType: false,//必须false才会自动加上正确的Content-Type
processData: false,//必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
success: function(data) {
if (data.Code < 0)
alert(data.Msg)
else
alert(data.Url)     //路径
},
error: function(data) {
alert("上传失败!");
}
});
}
</script>

 -------------------------------------------------------------------------------------------------

下载文件的控制器方法

//需要引用

using System.IO;

[HttpGet]
public void DownLoad(string Url)
{
string filePath = HttpContext.Current.Server.MapPath(Url);
FileInfo fi = new FileInfo(filePath);
help.DownLoad(fi.Name, fi.FullName);
}

<a href = "https://localhost:44370/api/FileOperation/DownLoad?Url=/FileUpload/132211303318715030.xls" > 下载 </ a >

//把132211303318715030.xls改为需要下载的虚拟地址

// 写下载的事件,AJAX请求调用方法就ok了

posted @ 2020-07-22 16:17  派大星_o  阅读(510)  评论(0编辑  收藏  举报