如题:在线等
这是我的html
<html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>Uploadify</title> <link href="/uploadify-v3.1/uploadify.css" rel="stylesheet" type="text/css" /> <script src="/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script src="/uploadify-v3.1/jquery.uploadify-3.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $('#uploadFile').uploadify({ 'swf': '/uploadify-v3.1/uploadify.swf")', 'uploader': '<%:Url.Action("haha") %>', 'onUploadComplete': function (file) { alert('The file ' + file.name + ' finished processing.'); } }); }); </script> </head> <body> <div id="fileQueue"></div> <input type="file" name="uploadFile" id="uploadFile" /> <p> <a href="javascript:$('#uploadify').uploadifyUpload()">上传</a>| <a href="javascript:$('#uploadify').uploadifyClearQueue()">取消上传</a> </p> </body> </html>
上传后台是这样的
[HttpPost] public JsonResult haha(HttpPostedFileBase file) { //调试发现这里的file是null if (file != nul) { string filePath = Server.MapPath("/MyUpload/"); string fileName = Path.GetFileName(file.FileName); string fileExtension = Path.GetExtension(fileName); string saveName = Guid.NewGuid().ToString() + fileExtension; file.SaveAs(filePath + saveName); return Json(new { Success = true, FileName = fileName, SaveName = saveName }); } else { return Json(new { Success = false, Message = "请选择要上传的文件!" }, JsonRequestBehavior.AllowGet); } }
现在的问题是后台接受的file是null,求指教
兄弟解决没有啊,答案在这里 建议多看看官方的说明文档
$(function () {
$('#uploadFile').uploadify({
'swf': '/uploadify-v3.1/uploadify.swf")',
'uploader': '<%:Url.Action("haha") %>',
'fileObjName':'file', //这个要和后台接受的参数名一样,不区分大小写,默认的是filedata 所以你用file取不到值
'onUploadComplete': function (file) {
alert('The file ' + file.name + ' finished processing.');
}
});
});
昨天已经发现只有使用FileData才能接收到数据了,但是不知道原因,多谢指教。顺便问下这是为什么呢,我的意思是这是基于什么样的理论,为什么后台接受数据的参数名一定要是fileObjName这个设置的值呢,
@枼秋: 这个是在flash里面设置的,你如果写过flash就知道了,flash选择完图片然后转换成字节来发送到服务端,FileData就是一个参数命名, fileObjName是flash里面flash暴露出来接口配置,方便用户自定义!
你要想得到参数才能进行复制,你看一下你的参数传递过来了吗。如果没有,则是前台的问题,如果传递过来了,那么你就可以看一下后台没有读取到数据!!