所以我想通过AJAX POST与fileUpload一起使用AntiForgeryToken.这是我的代码:
视图
@using (Html.BeginForm("Upload", "RX", FormMethod.Post, new {id = "frmRXUpload", enctype = "multipart/form-data"}))
{
@Html.AntiForgeryToken()
@Html.TextBoxFor(m => m.RXFile, new {.type = "file"})
...rest of code here
}
$(document).ready(function(){
$('#btnRXUpload').click(function () {
var form = $('#frmRXUpload')
if (form.valid()) {
var formData = new FormData(form);
formData.append('files', $('#frmRXUpload input[type="file"]')[0].files[0]);
formData.append('__RequestVerificationToken', fnGetToken());
$.ajax({
type: 'POST',
url: '/RX/Upload',
data: formData,
contentType: false,
processData: false
})
}
})
})
调节器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Upload()
{
//rest of code here
}
我明白了
防伪令牌无法解密.如果此应用程序由Web场或群集托管
通过提琴手的错误.不知道如何解决这个问题?
我发现了答案:
$(document).ready(function(){
$('#btnRXUpload').click(function () {
var form = $('#frmRXUpload')
if (form.valid()) {
var formData = new FormData(form.get(0)); //add .get(0)
formData.append('files', $('#frmRXUpload input[type="file"]')[0].files[0]);
$.ajax({
type: 'POST',
url: '/RX/Upload',
data: formData,
contentType: false,
processData: false
})
}
})
})
本文档描述了在ASP.NET MVC中尝试结合AJAX和AntiForgeryToken进行文件上传时遇到的问题,即防伪令牌无法解密。问题出现在Web场或集群环境中,并提供了修正方案,关键在于正确获取和附加AntiForgeryToken到formData中。解决方案是在创建formData时使用`form.get(0)`来获取表单元素,从而确保令牌被正确传递。
597

被折叠的 条评论
为什么被折叠?



