关于formData的使用可以去看基本操作
<p class="btnImport-p">
<button class="btnImport" title="上传" type="button" express="<%=infos.warehouseExpress%>">点击上传表格</button>
</p>
反正就知道有一个上传按钮叫Input type是file就行了;
接下来就是ajax 的使用了;
var uploadFile = layero.find("#uploadFile")[0].files[0]; //找到上传文件
formData.append("file", uploadFile); //上传文件,文件路径
$.ajax({
url: '.ashx',
dataType: 'json',
type: 'POST',
data: formData,
后台的ashx地址,这边只展示部分代码,记住FormData需要配合POST使用不然上传数据会出错。
接下来就是ashx后台的操作。
关于怎么获取formData里面的值,其实其已经和form表单一样了,只需要使用requet.from就可以获取了。
但是里面存储的文件流操作不能这样。
if (context.Request.Files.Count > 0)
{
HttpPostedFile file = context.Request.Files["file"];
//进行excel文件的读取
string Suffix = System.IO.Path.GetExtension(file.FileName).ToLower();//获取文件后缀名
if (Suffix == ".xlsx" || Suffix == ".xls" || Suffix == ".csv")
{
string filePath = context.Server.MapPath("/userIndex/uploadFiles/") + System.IO.Path.GetFileName(file.FileName); //拿到文件保存路径,实现文件上传
file.SaveAs(filePath);
msg = "文件上传成功";
}
else {
code = 402;
msg = "文件格式不正确,只支持(xlsx/xls/csv)";
}
var data = new { code = code, msg = msg,a=Suffix};
JavaScriptSerializer json = new JavaScriptSerializer();
var res = json.Serialize(data);
context.Response.Write(res);
只贴部分代码,我这边因为开发需要只获取excel里面格式的文件,如果有需求的话,可以获取图片文件,啥文件类型都可以存储
if (context.Request.Files.Count > 0)
{
HttpPostedFile file = context.Request.Files["file"];
string filePath = context.Server.MapPath("/userIndex/uploadFiles/") + System.IO.Path.GetFileName(file.FileName); //拿到文件保存路径,实现文件上传
file.SaveAs(filePath);
}
关键代码就这几句,只需要获取文件路径后面直接进行保存即可。
关于后面进行数据库的批量导入导出,接下来会进行讲解分析。预测使用NPOI控件