好的,所以我使用Node.js和Azure Blob Storage来处理一些文件上传.
当一个人上传图片时,我想向他们展示图片的缩略图.上传效果很好,我把它存储在我的blob中.
我使用这个很好的链接(在Azure SDK for Node.js中使用BlobService.getBlobURL()生成Azure共享访问签名)来帮助我创建此代码以创建共享访问临时URL.
process.env['AZURE_STORAGE_ACCOUNT'] = "[MY_ACCOUNT_NAME]";
process.env['AZURE_STORAGE_ACCESS_KEY'] = "[MY_ACCESS_KEY]";
var azure = require('azure');
var blobs = azure.createBlobService();
var tempUrl = blobs.getBlobUrl('[CONTAINER_NAME]', "[BLOB_NAME]", { AccessPolicy: {
Start: Date.now(),
Expiry: azure.date.minutesFromNow(60),
Permissions: azure.Constants.BlobConstants.SharedAccessPermissions.READ
}});
Run Code Online (Sandbox Code Playgroud)
这创建了一个网址就好了.
问题是当我拿到临时网址并将其插入我的浏览器时,它只会下载图像而不是查看它(在这种情况下它是一个简单的jpg文件).
这转换为我的代码,我似乎无法在标签中查看它...
链接正确,下载正确的文件......
有什么我需要做的事情来查看图像而不是下载它吗?
谢谢,大卫
UPDATE
好的,我发现这篇文章:http: //social.msdn.microsoft.com/Forums/windowsapps/en-US/b8759195-f490-420b-a587-2bb614366ad2/embedding-images-from-blob-storage-in- SSRS报告-不-不工作
基本上它告诉我在上传时没有设置文件类型,因此浏览器不知道如何处理它.
我使用了以下代码:http://www.snip2code.com/Snippet/8974/NodeJS-Photo-Upload-with-Azure-Storage/
这使我能够正确上传它,现在可以在浏览器中正确查看.
我现在遇到的问题是,当我将tempUrl放入img标签时,我收到此错误:
无法加载资源:服务器响应状态为403(服务器无法验证请求.请确保正确形成Authorization标头的值,包括签名.)
这是完全相同的链接,如果我将其发布到我的浏览器它工作得很好...为什么我不能在图像标签中显示它?
更新2
好吧,所以作为一个愚蠢的测试,我从我的页面加载和img标签从temp url获取源时延迟了7秒.这似乎解决了这个问题(大部分时间),但它显然是一个糟糕的解决方案,即使它工作...
至少这会验证,因为它有时起作用,我的标记至少是正确的. …