Javascript 使用Knockout.js和Ajax上传附件
我在获取MVC4VB网站的附件时遇到问题。我能够通过AJAX调用将媒体类型的文件发送到我的控制器,但我不知道如何使用该文件类型保存或转换为HttpPostedFileBase 上载.docx时我收到的错误是:Javascript 使用Knockout.js和Ajax上传附件,javascript,jquery,ajax,vb.net,knockout.js,Javascript,Jquery,Ajax,Vb.net,Knockout.js,我在获取MVC4VB网站的附件时遇到问题。我能够通过AJAX调用将媒体类型的文件发送到我的控制器,但我不知道如何使用该文件类型保存或转换为HttpPostedFileBase 上载.docx时我收到的错误是: "No MediaTypeFormatter is available to read an object of type 'HttpPostedFileBase' from content with media type 'application/vnd.openxmlformats-o
"No MediaTypeFormatter is available to read an object of type 'HttpPostedFileBase' from content with media type 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'."
以下是我的html代码片段:
<input id="files" name="files" class="input-file" type="file" data-bind="file: imageFile, fileObjectURL: imageObjectURL, fileBinaryData: imageBinary">
以下是AJAX调用:
var fileData = monthView.imageFile();
$.ajax({
type: 'POST',
url: "/api/Upload/FileUpload",
data: fileData,
async: false,
cache: false,
processData: false,
contentType: false,
success: function (data) {
console.log(data);
imageFile(getNameFromPath(monthView.imageFile()));
},
});
最后,这里是处理ajax调用的控制器:
<System.Web.Mvc.HttpPost>
Public Function FileUpload(ByVal file As HttpPostedFileBase) As Boolean
Dim fileName As String
Dim pathName As String
If file.ContentLength > 0 Then
fileName = Path.GetFileName(file.FileName)
pathName = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data/uploads"), fileName)
file.SaveAs(pathName)
Return True
End If
Return False
End Function
我不知道后端,但您可能想尝试创建一个FileData对象,然后。追加'file',monthView.imageFile:
var fileData = new FileData();
fileData.append('file', monthView.imageFile());
这似乎是HTML5标准,用于自定义数据的ajax调用
堂
祝你今天愉快
var fileData = new FileData();
fileData.append('file', monthView.imageFile());