上传的NodeJS的base64图像蔚蓝Blob存储结果" ResourceNotFound"错误 [英] Nodejs uploading base64 image to azure blob storage results to "ResourceNotFound" error
本文介绍了上传的NodeJS的base64图像蔚蓝Blob存储结果" ResourceNotFound"错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面是POST请求 JSON
:
{
名:images.jpg
\"file\":\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxQTEhIUEhIUFBUV…K9rk8hCAEkjFMUYiEAI+nHIpsQh0AkisDYRTOiCAbWVtgCtI6IlkHh7LDTQXLH0EIQBj//2Q==\"
}
和这里的要求在我的节点控制器/上传
的路线,我使用 createBlockBlobFromText()
从<一个HREF =https://www.npmjs.com/package/azure-storage相对=nofollow> Azure的存储空间。
VAR蔚蓝=要求('Azure的存储');
VAR blobSvc = azure.createBlobService('myblob.blob.core.windows.net/mycontainer',THE_KEY);controllers.upload =功能(REQ,资源,下一个){ VAR的startDate =新的日期();
VAR expiryDate =新的日期(的startDate); VAR sharedAccessPolicy = {
AccessPolicy:{
权限:azure.BlobUtilities.SharedAccessPermissions.WRITE,
开始:的startDate,
有效期:expiryDate
}
}; VAR sharedAccessSignatureToken = blobSvc.generateSharedAccessSignature('资源',req.body.file,sharedAccessPolicy);
变种sharedBlobService = azure.createBlobServiceWithSas('?'blobSvc.host.primaryHost +/+myContainer中'+ sharedAccessSignatureToken); sharedBlobService.createBlockBlobFromText('myContainer中',req.body.name,req.body.file,功能(错误,因此,响应){
如果(错误){
res.send(错误);
返回;
}
res.send(结果);
});}
但是我收到此错误。
{
code:ResourceNotFound
状态code:404,
的requestId:bffa6099-0001-000b-53f9-80d18a000000
}
解决方案
需要修改的夫妇:
- 有效期限应大于开始日期。
- 共享访问签名应使用同一容器名称。
- 共享访问签名应在文件名传递,而不是文件内容。
这些改变之后,code将类似于这样:
VAR sharedAccessSignatureToken = blobSvc.generateSharedAccessSignature('myContainer中',req.body.name,sharedAccessPolicy);
VAR sharedBlobService = azure.createBlobServiceWithSas(blobSvc.host,sharedAccessSignatureToken);sharedBlobService.createBlockBlobFromText('myContainer中',req.body.name,req.body.file,功能(错误,因此,响应){
如果(错误){
res.send(错误);
返回;
}
res.send(结果);
});
Here is the post request JSON
:
{
"name":"images.jpg",
"file":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxQTEhIUEhIUFBUV…K9rk8hCAEkjFMUYiEAI+nHIpsQh0AkisDYRTOiCAbWVtgCtI6IlkHh7LDTQXLH0EIQBj//2Q=="
}
And here's my node controller under the request /upload
route, I am using createBlockBlobFromText()
from azure-storage.
var azure = require('azure-storage');
var blobSvc = azure.createBlobService('myblob.blob.core.windows.net/mycontainer', THE_KEY);
controllers.upload = function (req, res, next){
var startDate = new Date();
var expiryDate = new Date(startDate);
var sharedAccessPolicy = {
AccessPolicy: {
Permissions: azure.BlobUtilities.SharedAccessPermissions.WRITE,
Start: startDate,
Expiry: expiryDate
}
};
var sharedAccessSignatureToken = blobSvc.generateSharedAccessSignature('resources', req.body.file, sharedAccessPolicy);
var sharedBlobService = azure.createBlobServiceWithSas(blobSvc.host.primaryHost + '/' + 'mycontainer' + '?' + sharedAccessSignatureToken);
sharedBlobService.createBlockBlobFromText('mycontainer', req.body.name, req.body.file, function(error, result, response) {
if (error) {
res.send(error);
return;
}
res.send(result);
});
}
However I am getting this error.
{
"code": "ResourceNotFound",
"statusCode": 404,
"requestId": "bffa6099-0001-000b-53f9-80d18a000000"
}
解决方案
Couple of changes needed:
- expiration date should be greater than start date.
- shared access signature should use same container name.
- shared access signature should be passed in file name, not file content.
After these changes, the code would be similar to this:
var sharedAccessSignatureToken = blobSvc.generateSharedAccessSignature('mycontainer', req.body.name, sharedAccessPolicy);
var sharedBlobService = azure.createBlobServiceWithSas(blobSvc.host, sharedAccessSignatureToken);
sharedBlobService.createBlockBlobFromText('mycontainer', req.body.name, req.body.file, function(error, result, response) {
if (error) {
res.send(error);
return;
}
res.send(result);
});
这篇关于上传的NodeJS的base64图像蔚蓝Blob存储结果&QUOT; ResourceNotFound&QUOT;错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文