前台Html上传文件,后台使用.net接收文件

前台使用的是html一个from表单里面一个file的input框

如下:

这里没有使用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());
            }
            
        }




你可能感兴趣的:(web前端,上传文件,C#,Html,Ajax)