Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Knockout.js和Ajax上传附件_Javascript_Jquery_Ajax_Vb.net_Knockout.js - Fatal编程技术网

Javascript 使用Knockout.js和Ajax上传附件

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

我在获取MVC4VB网站的附件时遇到问题。我能够通过AJAX调用将媒体类型的文件发送到我的控制器,但我不知道如何使用该文件类型保存或转换为HttpPostedFileBase

上载.docx时我收到的错误是:

"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());