MvcFileUploader 1.3.2不保存文件

时间:2013-10-29 16:52:58

标签: jquery asp.net-mvc

使用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"
}]

}

1 个答案:

答案 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的响应

由于