使用MvcFileUploader 1.3.2 http://www.nuget.org/packages/MvcFileUploader/演示程序不会将上传的文件保存到服务器上。
我正在使用VS2010。
复制创建新的Web项目并获取nuget包
PM> Install-Package MvcFileUploader
运行项目并导航到演示
http://localhost/MvcUploaderTest/Demo
使用控件上传文件,我正在使用一个小jpg。您应该看到返回的JSON结果。第一个条目是错误,我的看起来像这样。
{"files":[{"error":null,...
检查上传目录,看看文件是否已上传。
~/Content/uploads/
应用程序或日志中没有错误或异常。谁能让这个演示工作?
这看起来像一个有用的包,它使用了一个漂亮的jquery文件上传器。它有一个用于剃须刀的Html Helper,可以创建缩略图,您可以将上传的文件与实体相关联。我已经研究过使用http://backload.org/,但它更重,似乎有更多的配置。
由于
修改 这是JSON返回的
{
"files": [{
"error": null,
"name": "C:\\MvcApplication2\\MvcApplication2\\Content\\txt.jpg",
"size": 286054,
"type": "image/bmp",
"url": "/MvcUploaderTest/DownloadFile?fileUrl=/Content/uploads/C:\MvcApplication2\MvcApplication2\Content\txt.jpg\u0026mimetype=image/bmp",
"delete_url": "/MvcUploaderTest/DeleteFile?entityId=1234\u0026fileUrl=/Content/uploads/C:\\MvcApplication2\\MvcApplication2\\Content\\txt.jpg",
"thumbnail_url": "/Content/uploads/C:\\MvcApplication2\\MvcApplication2\\Content\\txt.jpg?width=80\u0026height=80",
"delete_type": "POST",
"FullPath": "C:\\MvcApplication2\\MvcApplication2\\Content\\uploads/C:\\MvcApplication2\\MvcApplication2\\Content\\txt.jpg",
"SavedFileName": "C:\\MvcApplication2\\MvcApplication2\\Content\\txt.jpg",
"Title": "txt"
}]
}
答案 0 :(得分:1)
似乎你在使用IE8
问题是Request.Files [0] .FileName给出了文件的完整路径,以防它从IE8发布。
Request.Files [0] .FileName 获取值 C:\ MvcApplication2 \ MvcApplication2 \ Content \ txt.jpg
尽管包括IE10在内的所有现代浏览器都只提供了没有路径的文件名。
Request.Files [0] .FileName 获取值 txt.jpg
不确定Mvc框架如何实现此HttpPostedFileBase.FileName属性。
由于MvcFileUploader使用此名称和StorageDirectory来保存在IE8情况下失败的文件。
修正:
在MvcUploaderTestController.UploadFile中更改此行
//overriding defaults
//x.FileName = Request.Files[i].FileName; //original
x.FileName = new FileInfo(Request.Files[i].FileName).Name;
这应该保存文件。
但是对于IE8也尝试下载从动作返回的json结果,结果总是显示进度。实际上Blueimp插件尝试使用iframe为IE8上传文件 https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
您需要使用接受标头
发送内容类型为text / plain的响应由于