FormData();支持ie10 ie10+
前端:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta charset="utf-8" />
<script type="text/javascript">
$.support.cors = true;
var ApiUrl = "http://localhost:12745/";
$(function () {
$("#upload").click(function () {
$("#imgWait").show();
var formData = new FormData();
formData.append("myfile", document.getElementById("file1").files[0]);
$.ajax({
url: ApiUrl + "api/FileManage/UploadFile",
type: "POST",
data: formData,
/**
*必须false才会自动加上正确的Content-Type
*/
contentType: false,
/**
* 必须false才会避开jQuery对 formdata 的默认处理
* XMLHttpRequest会对 formdata 进行正确的处理
*/
processData: false,
success: function (data) {
if (data.status == "true") {
alert("上传成功!");
}
if (data.status == "error") {
alert(data.msg);
}
$("#imgWait").hide();
},
error: function () {
alert("上传失败!");
$("#imgWait").hide();
}
});
});
});
</script>
</head>
<body>
选择文件:<input type="file" id="file1" /><br />
<input type="button" id="upload" value="上传" />
<img src="wait.gif" style="display:none" id="imgWait" />
</body>
</html>
后端:
/// <summary>
/// 文件上传
/// </summary>
/// <returns></returns>
[HttpPost]
public HttpResponseMessage UploadFile()
{
HttpResponseMessage result = null;
var httpRequest = System.Web.HttpContext.Current.Request;
if (httpRequest.Files.Count > 0)
{
try
{
string url = string.Empty;
foreach (string file in httpRequest.Files)
{
var postedFile = httpRequest.Files[file];
var filePath = System.Web.HttpContext.Current.Server.MapPath("~/Files/");
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
postedFile.SaveAs(filePath + postedFile.FileName);
url += "Files/" + postedFile.FileName + ",";
}
result = Request.CreateResponse(HttpStatusCode.OK, url.Substring(0, url.Length - 1));
}
catch (Exception ex)
{
result = Request.CreateResponse(HttpStatusCode.OK, "error:" + ex.Message);
}
}
else
{
result = Request.CreateResponse(HttpStatusCode.OK, "0");
}
return result;
}
/// <summary>
/// 根据ID 下载文件
/// </summary>
/// <returns></returns>
[HttpGet]
public HttpResponseMessage DownLoadFile(Guid id)
{
try
{
DataTable dt = null; //BLL.Menu.GetModelByID(id);
if (dt.Rows.Count>0)
{
byte[] bytes = dt.Rows[0]["Icon"] as byte[];
if (bytes.Length>0)
{
//InputStream input = new ByteArrayInputStream(bytes);
}
}
var FilePath = @"C:\Users\Jone-pc\Desktop\QQ图片20170705090821.png";//System.Web.Hosting.HostingEnvironment.MapPath(@"C:\Users\Jone-pc\Desktop\QQ图片20170705090821.png");
var stream = new FileStream(FilePath, FileMode.Open);
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(stream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "Wep Api Demo File.jpg"
};
return response;
}
catch (Exception ex)
{
return new HttpResponseMessage(HttpStatusCode.NoContent);
}
}
/// <summary>
/// 将文件上传到指定路径中保存
/// </summary>
/// <returns>上传文件结果信息</returns>
[System.Web.Http.HttpPost]
//[ValidateInput(false)]
public HttpResponseMessage PostExcelData()
{
string info = string.Empty;
try
{
//获取客户端上传的文件集合
HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
//判断是否存在文件
if (files.Count > 0)
{
//获取文件集合中的第一个文件(每次只上传一个文件)
HttpPostedFile file = files[0];
//定义文件存放的目标路径
string targetDir = System.Web.HttpContext.Current.Server.MapPath("~/FileUpLoad/Product");
//创建目标路径
//ZFiles.CreateDirectory(targetDir);
if (!System.IO.Directory.Exists(targetDir))
{
Directory.CreateDirectory(targetDir);
}
string fullDir = System.IO.Path.Combine(targetDir + file.FileName);
//组合成文件的完整路径
//string path = System.IO.Path.Combine(targetDir, System.IO.Path.GetFileName(file.FileName));
//保存上传的文件到指定路径中
file.SaveAs(fullDir);
info = "上传成功";
}
else
{
info = "上传失败";
}
}
catch
{
info = "上传失败";
}
return new HttpResponseMessage { Content = new StringContent(info, System.Text.Encoding.UTF8, "text/html") };
}