我正在尝试使用经典ASP将文件上传到Azure Blob存储(无选择!)。然而,虽然我可以使用MSXML2.ServerXMLHTTP使用can list容器内容,但我无法创建blob。我需要用它来上传PDF文件,所以我使用的是BlockBlob。
我相信我无法正确创建授权密钥。有没有人有经典ASP VBScript中创建授权密钥的代码示例?我有类似下面的内容,但不知道如何在Classic ASP中生成密钥。
' replace with your account's settings
' setup the URL
baseUrl = "https://<myaccount>.blob.core.windows.net"
Set http = Server.CreateObject("MSXML2.ServerXMLHTTP")
PathUrl = baseUrl & "/test/myblob"
' setup the request and authorization
http.open "PUT", PathUrl , false
'How do I generate this key from the headers and path using HMAC-SHA256 and my prim/sec account key
http.setRequestHeader "Authorization", "SharedKey <myaccount>:?????"
http.setRequestHeader "Date", "2011-6-16 9:22"
http.setRequestHeader "x-ms-date", "2011-06-16 9:22"
http.setRequestHeader "x-ms-version", "2009-09-19"
http.setRequestHeader "Content-Length", "11"
http.setRequestHeader "x-ms-blob-type","BlockBlob"
http.setRequestHeader "Content-Type", "text/plain; charset=UTF-8"
postData = "hello world"
' send the POST data
http.send postData
' optionally write out the response if you need to check if it worked
Response.Write http.responseText
我收到错误AuthenticationFailedServer无法验证请求。确保正确形成Authorization标头的值,包括签名。
由于
格雷姆
答案 0 :(得分:3)
您必须实现此处定义的算法的等效项:
http://msdn.microsoft.com/en-us/library/dd179428.aspx
但是,如果可能的话,我建议使用更简单的方法。我希望您的ASP应用程序对.NET应用程序进行ASMX(或WCF等效调用),该应用程序返回具有短寿命的共享访问签名(SAS)(例如,10分钟到期)。只需传递您将上传的PDF的名称,并让它为您创建具有写访问权限的签名。一旦你有签名,你可以简单地对它进行PUT而不用担心计算任何东西。如果PDF非常大(> 64MB),您将遇到需要担心分块的问题,但对于小型PDF,您可以在SAS上执行非常简单的PUT操作而无需担心。
这个代码很简单:
var blobName = "foo.pdf"; //taken from ASP app
var blob = container.GetBlobReference(blobName);
var sas = blob.GetSharedAccessSignature(new SharedAccessPolicy()
{
Permissions = SharedAccessPermissions.Write,
SharedAccessExpiryTime = DateTime.AddMinutes(10)
});
在这种情况下,容器就是您希望用户上传的容器。 'sas'变量将包含您需要发送的查询字符串部分。你只需要附加它(例如blob.Uri.AbsoluteUri + sas)。
使用此解决方案,您的ASP应用程序不了解Windows Azure blob存储和详细信息,只有您的.NET应用程序需要知道密钥或如何计算SAS。
答案 1 :(得分:-1)
您可以使用简单的C#应用程序将文件上传到Azure存储。 请参阅链接了解更多详情。 &LT; http://tuvian.wordpress.com/2011/06/24/how-to-upload-blob-to-azure-using-asp-net-tool-for-upload-files-to-azure-using-asp-netc/&gt;