前台使用的是html一个from表单里面一个file的input框
如下:
<form enctype= "multipart/form-data" ID="form1" runat="server">
<input type="file" id="file" name="file" runat="server">
<input type="file" value="提交" οnclick="uploadFile()">
</form>
这里没有使用submit按钮进行提交操作,使用的是平常的button按钮进行上传,因为submit会进行刷新表单,所以不用submit,你也可以使用submit,这里演示的使用的是button
对应的js如下:
function uploadFile(){
var ofile = $("#file").get(0).files[0];
var formData = new FormData();
if(!ofile){
$.messager.alert('提示','请上传文件!','info');
return;
}
var size = ofile.size / 1024 / 1024;
if (size > 5) {
$.messager.alert('提示','文件不能大于5M','info');
return;
}
formData.append("file", ofile);//这个是文件,这里只是演示上传了一个文件,如果要上传多个的话将[0]去掉
formData.append("F_ID", $("#F_ID").val());//这个是上传的其他参数
formData.append("F_NAME", fNameHL);
$.ajax({
url: api_address+'api/Test/Test',
type: "POST",
data: formData,
cache: false,//不需要缓存
processData: false,
contentType: false,
success: function(data){
var ss= $.parseJSON(data);
if(ss.MSG == 'OK') {
$.messager.alert('提示','保存成功!','info');
}
}
});
}
后台对应方法:
[Route("Test")]
[HttpPost]
public HttpResponseMessage Test(HttpRequestMessage request)
{
try
{
string reqData = "";
string F_ID = HttpContext.Current.Request["F_ID"];
string F_NAME = HttpContext.Current.Request["F_NAME"];
HttpFileCollection files = HttpContext.Current.Request.Files;
FileClass fileClass = new FileClass();
//foreach (string key in files.AllKeys)//如需上传多个文件则需要for循环处理
//{
HttpPostedFile file = null;
if (files.Count != 0) {
file = files[0];//这里只有一个文件
if (string.IsNullOrEmpty(file.FileName) == false)
{
file.SaveAs(HttpContext.Current.Server.MapPath("/Test/LTime/") + F_NAME);
string[] stringPC = { F_ID, F_NAME, F_VERSION };
bool b = fileClass.SaveFile(stringPC, ref reqData);//对数据库进行操作
if (b)
{
return Request.CreateResponse(HttpStatusCode.OK, reqData);
}
else
{
if (System.IO.File.Exists(HttpContext.Current.Server.MapPath("/Test/LTime/") + F_NAME))
{
System.IO.File.Delete(HttpContext.Current.Server.MapPath("/Test/LTime/") + F_NAME);
}
return Request.CreateResponse(HttpStatusCode.OK, reqData);
}
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest, "Error");
}
}
//}
}
catch (Exception ex) {
return Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message.ToString());
}
}