//這是寫的一個類,具體是上傳圖片的上傳和下載
public class FileResult
{
public int Code { get; set; }
public string Msg { get; set; }
public string Url { get; set; }
}
//首先在api方法內新建一個控制器
//控制器內寫關於上傳和下載的具體代碼
// 允許上傳的文件擴展名
public string[] ExtentsfileName = new string[] { ".doc", ".xls", ".png",".jpg" };
public string[] ExtentsfileName = new string[] { ".doc", ".xls", ".png",".jpg" };
public string UrlPath = "/Upload/";
//下載
[HttpGet]
public void DownLoad(string Url)
{
string filePath = HttpContext.Current.Server.MapPath(Url);
FileInfo fi = new FileInfo(filePath);
if (File.Exists(filePath))
{
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ClearHeaders();
response.ClearContent();
response.Buffer = true;
response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", fi.Name));
response.Charset = "GB2312";
response.ContentEncoding = Encoding.GetEncoding("GB2312");
response.ContentType = MimeMapping.GetMimeMapping(fi.Name);
response.WriteFile(filePath);
response.Flush();
response.Close();
}
}
[HttpGet]
public void DownLoad(string Url)
{
string filePath = HttpContext.Current.Server.MapPath(Url);
FileInfo fi = new FileInfo(filePath);
if (File.Exists(filePath))
{
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ClearHeaders();
response.ClearContent();
response.Buffer = true;
response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", fi.Name));
response.Charset = "GB2312";
response.ContentEncoding = Encoding.GetEncoding("GB2312");
response.ContentType = MimeMapping.GetMimeMapping(fi.Name);
response.WriteFile(filePath);
response.Flush();
response.Close();
}
}
//上傳
[HttpPost]
public FileResult UpLoad()
{
var request = HttpContext.Current.Request;
if (request.Files.Count > 0)
{
var file = request.Files[0];
var extenfilename = Path.GetExtension(file.FileName);
[HttpPost]
public FileResult UpLoad()
{
var request = HttpContext.Current.Request;
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 (!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 = "" };
}
}
}
{
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 = "" };
}
}
}
//寫完api方法之后寫mvc前台
<input type = "file" id="f1" />
<input type = "button" value="aa" onclick="ff()"/>
<input type = "button" value="aa" onclick="ff()"/>
< script >
function ff()
{
var formData = new FormData();
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("上傳失敗!");
}
});
}
function ff()
{
var formData = new FormData();
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>
<a href = "https://localhost:44370/api/FileOperation/DownLoad?Url=/FileUpload/132211303318715030.xls" > 下載 </ a >
//ps記住要在api先加上跨域文件,不然api的方法會傳不到mvc,本人經常忘記加跨域文件