0

我的 Web 应用程序通过将 JSON 数据发布到某些 URL(不使用 html 表单)与服务器端(ASP.NET MVC 3)进行交互。

如何将文件发布到服务器并将其绑定到HttpPostedFileBase使用 JSON 而不使用多部分表单?

谢谢!

4

2 回答 2

2

我已经这样做了,但没有使用HttpPostedFileBase从 MVC 应用程序获取内容。我只是使用 JSON。

您可以简单地使用FileReader.onload(在 HTML5 上)方法来提取文件内容并作为 Base64 字符串直接发布到 MVC 控制器。是#upload-button一个<input type=file ...>标签。

    var file = $('#upload-button')[0].files[0];
    var reader = new FileReader();
    reader.onload = (function (f) {
        return function (e) {
            if (e.target.readyState == FileReader.DONE) {
                $.ajax("FileStore/SavePicture", {
                    data: { content: e.target.result, name: f.name },
                    type: "post",
                    contentType: "application/json"
                });
            }
        };
    })(file)

从那里您可以使用Convert.FromBase64String方法转换为byte[]. 这就是 Action 内容的样子;

    string base64String = content;
    // Get the starting point of the actual content from the base64String.
    int start = base64String.IndexOf(",") + 1;
    int length = base64String.Length - start;
    contentAsString = base64String.Substring(start, length);

    byte[] dataAsBytes = Convert.FromBase64String(contentAsString);

可能还有其他一些方法可以做到这一点。

于 2012-09-19T12:13:38.727 回答
0

可以,但是你会遇到跨浏览器的问题,更多细节可以在这里找到:如何使用 jQuery 异步上传文件?或者只是谷歌“ajax文件上传”

于 2012-09-19T09:54:40.640 回答