我正在使用blueimp upload
库。我在不同的javascript
文件中上传了代码。我正在使用ASP.Net MVC
。我想通过Url.Content("~")
或其他东西(如果有的话)获取我的应用程序的根目录。我尝试了this amswer,但结果却给了我文字'@ Url.Content(“〜”)'。所以我想用html的data-*
。现在我的文件上传看起来像
<input type="file" name="files[]" data-root ='<%= @Url.Content("~/") %>' multiple/>
并上传代码
$('input:file', subscriber).fileupload({
dataType: 'json',
url: $(this).data('root')+'ControllerName/ActionName',
done: function (e, data) {
if (!data || !data.result || !data.result.length) {
alert("Error occured when uploading the file");
return;
}
if (data.result[0].error) {
alert("Error occured. " + data.result[0].error);
return;
}
LoadHtmlInDiv('AssigneeDocList', '/Assignee/DocumentList');
},
fail: function (e, data) {
alert("Error occured when uploading the file");
}
});
但它正在提供Error 404
因为新网址就像
/ProjectName/ControllerName/undefinedControllerName/ActionName
我试图在fail
回调中检查相同的值,这是正确的。不知道为什么制作网址是错误的。
答案 0 :(得分:1)
我假设您的<input/>
标记位于表单中。如果是这样,您可以将空字符串作为url
传递。 blueimp upload
上传使用form
的{{1}}方法网址作为基础,并将自己的网址部分附加到其中。这就是为什么你会得到这样的网址
action
在我自己的代码中,我声明了我的形式 -
/ProjectName/ControllerName/undefinedControllerName/ActionName
我的@using (Html.BeginForm("Upload", "Document", FormMethod.Post, new { enctype = "multipart/form-data" }))
标记就像 -
input
和javascript -
<input id="fileupload" type="file" name="file" />
我已删除了函数实现,但您可以理解。这个文件发布到
$('#fileupload').fileupload({
url: '',
dataType: 'json',
add: function (e, data) {},
done: function (e, data) {},
progressall: function (e, data) {}
});