gpt4 book ai didi

jquery - 从 javascript 将大型 Base64 字符串上传/流式传输到 Mvc 的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-01 00:32:13 28 4
gpt4 key购买 nike

我想从 JavaScript 客户端发送一个大的 Base64 字符串(数兆字节)到我们的 Mvc 服务器。目前我们正在使用 Ajax 并发送如下字符串:

Upload = function (aUrl, aFormData, aOnProgress, aOnSuccess, aOnTimeout, aOnError) {
var settings = {
url: aUrl,
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(aFormData), // { aData: longBase64String }
success: function (resultObject, textStatus) {
if (textStatus == "success" && aOnSuccess) aOnSuccess(resultObject);
},
error: function (jqXHR, textStatus, errorThrown) {
if (textStatus == "timeout" && aOnTimeout) aOnTimeout();
else if (textStatus == "error" && aOnError) aOnError();
}
};

settings.xhr = function () {
var req = new XMLHttpRequest(); // Create xml http request.
if (req) req.addEventListener('progress', aOnProgress, false); // Upload progress.
return req;
}

return $.ajax(settings);
}

aFormData 只是采用一个 Json 对象,其中包含 base64 字符串:{ aData: myString }

在 Mvc 方面,我们有以下 Controller 代码:

[Authorize, RequireHttp, HttpPost]
public ActionResult SetImage(String aData) {
// Do something with the data.
return Json("We got it.");
}

现在 - 就将数据获取到服务器而言,这似乎在我们的本地主机测试环境中有效。我担心这可能不会以良好的异步和缓冲方式“流式传输”,而是可能会阻止所有内容直到发送为止,而且我没有看到对客户端的“真正”影响,因为它正在运行本地主机。我只是不太了解这里发生的事情。

我希望客户端能够继续使用 Web 应用程序,而不会出现任何阻塞。我的内容类型或者 Mvc 端的参数应该不同吗?我希望这能分块发送。

即使我的方法是正确的,有人可以启发我一些关于幕后发生的事情吗?我看到一些帖子使用了带有“multipart”的内容类型?那是什么?我应该在这里使用它吗?

谢谢。

最佳答案

只要使用 jQuery 异步发送请求(这是默认设置),它就不会阻塞客户端。

关于“multipart”问题,很可能是指表单内容类型“multipart/form-data”

The content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data.

来源:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4

由于您发送的是 base64 内容,它既不是文件、“非 ASCII 数据”也不是二进制文件,您应该没问题。

关于jquery - 从 javascript 将大型 Base64 字符串上传/流式传输到 Mvc 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485916/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com