我能够通过上传按钮成功将文件上传到我的供应商API。我的供应商API还返回blob格式的.png文件,我需要将其上传到Azure Blob存储。我尝试了一些方法,但在我的Node控制台中收到以下错误:
[错误] statusCode:414
我的前端代码位于Angular Controller中,该控制器将数据传递回包含Azure Blob存储调用的Node后端。我安装了所需的强大和请求模块,但是我没有在我当前的后端代码中使用它们,因为我收到的数据已经是blob格式。
这是我的前端上传代码。成功"结果"是我返回的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存储?
答案 0 :(得分:1)
HTTP状态代码414表示“Request-URI太长”。您是否将正确的blob名称传递给blobSvc.createBlockBlobFromText?
答案 1 :(得分:1)
问题在于这行代码:
blobSvc.createBlockBlobFromText('blob5', file, filename, function (error, result, response) {
您的参数顺序错误。它应该是:
blobSvc.createBlockBlobFromText('blob5', filename, file, function (error, result, response) {