将 AJAX 响应(图像 blob)上传到 Azure Blob 存储:错误 414
Upload AJAX response (image blob) to Azure Blob Storage: Error 414
我能够通过上传按钮成功上传文件给我的供应商 API。我的供应商 API 还 returns 一个 blob 格式的 .png 文件,我需要将其上传到 Azure Blob 存储。我尝试了几种方法,但在我的节点控制台中收到以下错误:
[Error] statusCode: 414
我的前端代码在一个 Angular 控制器中,它将数据传回我的节点后端,其中包含我的 Azure Blob 存储调用。我安装了强大的和请求的模块,但我没有在我当前的后端代码中使用它们,因为我收到的数据已经是 blob 格式。
这是我的前端上传代码。成功"result"是我返回的blob数据:
$scope.sendToProduction = function () {
var parts = document.getElementById("file").value.split("\");
var uploadedfilename = parts[parts.length - 1];
var basefilename = uploadedfilename.split(".")[0];
var fileextension = uploadedfilename.split(".")[1];
var filename = basefilename + '.' + fileextension;
var file = document.getElementById("file").files[0];
var formdata = new FormData();
formdata.append(filename, file);
$.ajax({
url: 'http://myvendorsapi/fileuploadendpoint',
type: "POST",
data: formdata,
mimeType: "multipart/form-data",
processData: false,
contentType: false,
crossDomain: true,
success: function (result) {
var filename = 'Test.png';
var file = result;
console.log(file);
$http.post('/postAdvanced', {filename: filename, file: file }).success(function (data) {
console.log(data);
}, function (err) {
console.log(err);
});
},
error: function (error) {
console.log("Something went wrong!");
}
});
};
这是我用于上传到 Azure Blob 存储的节点后端:
app.post('/postAdvanced', function (req, res, next) {
var filename = req.body.filename;
var file = req.body.file;
blobSvc.createBlockBlobFromText('blob5', file, filename, function (error, result, response) {
if (!error) {
console.log("Uploaded" + result);
}
else {
console.log(error);
}
});
})
如何将 AJAX 响应上传到 Azure Blob 存储?
HTTP 状态代码 414 表示 "Request-URI Too Long"。您是否将正确的 blob 名称传递给 blobSvc.createBlockBlobFromText?
问题是在这行代码中:
blobSvc.createBlockBlobFromText('blob5', file, filename, function (error, result, response) {
你的参数顺序错误。应该是:
blobSvc.createBlockBlobFromText('blob5', filename, file, function (error, result, response) {
我能够通过上传按钮成功上传文件给我的供应商 API。我的供应商 API 还 returns 一个 blob 格式的 .png 文件,我需要将其上传到 Azure Blob 存储。我尝试了几种方法,但在我的节点控制台中收到以下错误:
[Error] statusCode: 414
我的前端代码在一个 Angular 控制器中,它将数据传回我的节点后端,其中包含我的 Azure Blob 存储调用。我安装了强大的和请求的模块,但我没有在我当前的后端代码中使用它们,因为我收到的数据已经是 blob 格式。
这是我的前端上传代码。成功"result"是我返回的blob数据:
$scope.sendToProduction = function () {
var parts = document.getElementById("file").value.split("\");
var uploadedfilename = parts[parts.length - 1];
var basefilename = uploadedfilename.split(".")[0];
var fileextension = uploadedfilename.split(".")[1];
var filename = basefilename + '.' + fileextension;
var file = document.getElementById("file").files[0];
var formdata = new FormData();
formdata.append(filename, file);
$.ajax({
url: 'http://myvendorsapi/fileuploadendpoint',
type: "POST",
data: formdata,
mimeType: "multipart/form-data",
processData: false,
contentType: false,
crossDomain: true,
success: function (result) {
var filename = 'Test.png';
var file = result;
console.log(file);
$http.post('/postAdvanced', {filename: filename, file: file }).success(function (data) {
console.log(data);
}, function (err) {
console.log(err);
});
},
error: function (error) {
console.log("Something went wrong!");
}
});
};
这是我用于上传到 Azure Blob 存储的节点后端:
app.post('/postAdvanced', function (req, res, next) {
var filename = req.body.filename;
var file = req.body.file;
blobSvc.createBlockBlobFromText('blob5', file, filename, function (error, result, response) {
if (!error) {
console.log("Uploaded" + result);
}
else {
console.log(error);
}
});
})
如何将 AJAX 响应上传到 Azure Blob 存储?
HTTP 状态代码 414 表示 "Request-URI Too Long"。您是否将正确的 blob 名称传递给 blobSvc.createBlockBlobFromText?
问题是在这行代码中:
blobSvc.createBlockBlobFromText('blob5', file, filename, function (error, result, response) {
你的参数顺序错误。应该是:
blobSvc.createBlockBlobFromText('blob5', filename, file, function (error, result, response) {