通过 nodeJS 和 Web 或移动客户端使用共享访问权限将文件上传到 Azure
Uploading files to Azure using Shared Access Permissions with nodeJS and a web or mobile client
在我的 Azure 门户上,我有这个 blob:Home / Storage accounts / my_blob_account / Blobs / users
我要存档的内容:用户可以将图像上传到 Azure Blob。
他基本上调用节点服务器生成一个 url 这样我就可以放文件了。
这是nodeJS代码:
export const generateBlobUrl = (format) => {
const fileName = generateRandonChars(16) + '.' + format.toLowerCase()
const blob = Azure.createBlobService(my_blob_account, BLOB_SECRET)
const sharedAccessPolicy = { AccessPolicy: {
Expiry: Azure.date.minutesFromNow(60),
Permissions: Azure.Constants.BlobConstants.SharedAccessPermissions.READ
}}
const sasToken = blob.generateSharedAccessSignature('users', fileName, sharedAccessPolicy);
return blob.getUrl('users', fileName, sasToken)
}
在客户端,我有这个:
RNFetchBlob.fetch('PUT', "the url that came from the nodeJS", {
'Content-Type': 'application/octet-stream',
'x-ms-blob-type': 'BlockBlob'
}, RNFetchBlob.wrap("path to local file"))
.then(r =>{
console.log(r)
})
.catch(err =>{
console.log(err)
})
怎么了?我收到此错误:
AuthorizationPermissionMismatch
此请求无权使用此权限执行此操作。
RequestId:63ce7eea-a01e-001c-298d-73cedd000000
Time:2019-09-25T10:37:37.7337049Z
您正在创建具有读取权限的 SAS 令牌:
Permissions: Azure.Constants.BlobConstants.SharedAccessPermissions.READ
您应该创建一个具有写入权限的令牌:
Permissions: Azure.Constants.BlobConstants.SharedAccessPermissions.WRITE
在我的 Azure 门户上,我有这个 blob:Home / Storage accounts / my_blob_account / Blobs / users
我要存档的内容:用户可以将图像上传到 Azure Blob。 他基本上调用节点服务器生成一个 url 这样我就可以放文件了。
这是nodeJS代码:
export const generateBlobUrl = (format) => {
const fileName = generateRandonChars(16) + '.' + format.toLowerCase()
const blob = Azure.createBlobService(my_blob_account, BLOB_SECRET)
const sharedAccessPolicy = { AccessPolicy: {
Expiry: Azure.date.minutesFromNow(60),
Permissions: Azure.Constants.BlobConstants.SharedAccessPermissions.READ
}}
const sasToken = blob.generateSharedAccessSignature('users', fileName, sharedAccessPolicy);
return blob.getUrl('users', fileName, sasToken)
}
在客户端,我有这个:
RNFetchBlob.fetch('PUT', "the url that came from the nodeJS", {
'Content-Type': 'application/octet-stream',
'x-ms-blob-type': 'BlockBlob'
}, RNFetchBlob.wrap("path to local file"))
.then(r =>{
console.log(r)
})
.catch(err =>{
console.log(err)
})
怎么了?我收到此错误:
AuthorizationPermissionMismatch
此请求无权使用此权限执行此操作。
RequestId:63ce7eea-a01e-001c-298d-73cedd000000
Time:2019-09-25T10:37:37.7337049Z
您正在创建具有读取权限的 SAS 令牌:
Permissions: Azure.Constants.BlobConstants.SharedAccessPermissions.READ
您应该创建一个具有写入权限的令牌:
Permissions: Azure.Constants.BlobConstants.SharedAccessPermissions.WRITE