在Azure本身,我发现我可以制作名称长度为1000但不是1100的blob(所以我猜1024).使用dev存储我可以做200但不是300(所以我想有些东西与MAX_PATH有关).有官方限制吗?
我正在使用Microsoft.WindowsAzure.Storage.*C#中的库.
这就是我将内容上传到存储的方式:
// Store in storage
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("...connection string...");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("pictures");
// Create container if it doesnt exist
container.CreateIfNotExists();
// Make available to everyone
container.SetPermissions(new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
// Save image
CloudBlockBlob blockBlob = container.GetBlockBlobReference("blah.jpg");
blockBlob.UploadFromByteArray(byteArrayThumbnail, 0, byteArrayThumbnail.Length);
blockBlob.Properties.ContentType = "image/jpg"; // *** NOT WORKING ***
Run Code Online (Sandbox Code Playgroud)
我上传到存储的所有内容都以内容类型"application/octet-stream"保存,即使我使用的值为"image/jpg"的setter(请参阅我的代码中的最后一行).
问题#1:为什么不使用ContentType setter?
问题2:如果我手动将内容类型更改为"image/jpg",使用Windows Azure管理门户,然后将文件的绝对URI复制到浏览器的地址字段,然后按回车键,则会下载jpg文件而不是显示.是不是应该显示这个mime类型而不是下载?我该如何改变?
我有一些文件存储在我的windows azure blob存储中.我想获取这些文件并创建一个zip文件并存储到一个新文件夹.然后返回zip文件的路径.设置zip文件位置的权限,以便我的用户可以通过单击链接将zip文件下载到本地计算机
https://mystorage.blob.core.windows.net/myfiles/2b5f8ea6-3dc2-4b77-abfe-4da832e02556/AppList/isjirleq/mydocs1.doc
https://mystorage.blob.core.windows.net/myfiles/2b5f8ea6-3dc2-4b77-abfe-4da832e02556/tempo/xyz/mymusic.mp3
https://mystorage.blob.core.windows.net/myfiles/2b5f8ea6-3dc2-4b77-abfe-4da832e02556/general/video/myVideo.wmv
https://mystorage.blob.core.windows.net/myfiles/2b5f8ea6-3dc2-4b77-abfe-4da832e02556/photo/photo1.png
Run Code Online (Sandbox Code Playgroud)
我希望能够循环这些文件并将它们一起压缩以创建一个新的zip文件
(https://mystorage.blob.core.windows.net/myzippedfiles/allmyFiles.zip)并返回zip文件的路径
我的azure blob中有大量文件.所以下载它们并压缩它们并上传并不是一个好主意.
我该怎么做.我需要一些示例代码来执行此操作
获取Azure存储容器中Blob数量的最有效方法是什么?
现在除了下面的代码,我想不出任何其他方式:
CloudBlobContainer container = GetContainer("mycontainer");
var count = container.ListBlobs().Count();
Run Code Online (Sandbox Code Playgroud) 我们正在考虑使用Azure blob存储作为备份存储.但我们不确定交易价格对我们实际意味着什么.(他们收取每个存储空间的成本和每笔交易的成本)
例如,如果我每天将一个16 GB的文件传输到存储器(并删除,那么我最终总是保留10个版本).这仅仅意味着每天进行一次交易(+可能是少数用于列表等),或者是一种类似每个数据包的交易,这样每天都会花费我的负担.或者交易意味着什么?
我正在尝试发布一个800mb +的软件包.但是Windows Azure发布只允许最多600mb,所以我可能需要先将一些非结构化文件上传到Windows Azure存储.
将文件上传到Windows Azure存储的最佳方法是什么?
我收到这个错误:
<Error>
<Code>AuthenticationFailed</Code>
<Message>
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:6c3fc9a8-cdf6-4874-a141-10282b709022 Time:2014-07-30T10:48:43.8634735Z
</Message>
<AuthenticationErrorDetail>
Signature did not match. String to sign used was rwl 2014-07-31T04:48:20Z /acoustie/$root 2014-02-14
</AuthenticationErrorDetail>
</Error>
Run Code Online (Sandbox Code Playgroud)
我在生成sas(共享访问签名)时得到它,然后将容器uri末尾的sas粘贴到浏览器中.这是生成的sas的完整地址:
https://acoustie.blob.core.windows.net/mark?sv=2014-02-14&sr=c&sig=E6w%2B3B8bAXK8Lhvvr62exec5blSxsA62aSWAg7rmX4g%3D&se=2014-07-30T13%3A30%3A14Z&sp=rwl
Run Code Online (Sandbox Code Playgroud)
我已经搜索了SO和谷歌,并尝试了很多组合,据我所知,我正在做的一切正确,我知道我不是,我只是看不到它...真的希望有人可以提供帮助: - \
为了清楚起见,我在容器上生成一个sas,而不是特定的blob,而不是在根容器上.blob上的访问被定义为Public Blob.我的最终目标是简单地允许使用sas写入容器,而'debugging'我已经为SharedAccessBlobPolicy添加了大部分权限.
我尝试在容器名称的开头和结尾添加\ .没变.
这是我用来生成sas的代码:
var blobClient = storageAccount.CreateCloudBlobClient();
//Get a reference to the blob container
var container = blobClient.GetContainerReference(containerName);
// Do not set start time so the sas becomes valid …Run Code Online (Sandbox Code Playgroud) 我不得不使用流行的FTP客户端(例如FileZilla)将安全FTP设置为Azure Blob存储.经过大量的研究,我发现了一个链接:
代码部署为辅助角色,代码创建一个FTP服务器,可以接受来自所有流行FTP客户端(例如FileZilla)的连接,以便命令和控制blob存储帐户.
按照链接的说明,我已经实现了相同的功能,并在Azure生产环境中部署了辅助角色,并且成功了.但是我仍然无法使用FileZilla连接FTP主机服务器(由我在配置文件中提供).我不知道我做错了什么或错过了什么.
我正在尝试获取有关Azure blob的一些信息(上次修改的UTC日期时间).此信息存储在CloudBlob.Properties.LastModifiedUtc属性中.
如果我使用方法GetBlobReference()或GetBlockBlobReference(),则不初始化blob的属性(LastModifiedUtc是DateTime.MinDate).如果我使用ListBlobs(),则属性被正确初始化(LastModifiedUtc具有正确的值).
使用GetBlobReference函数时我做错了吗?有没有办法如何为一个特定的blob获取CloudBlob实例?我知道我可以错过ListBlobs()并过滤我感兴趣的blob,或者使用CloudBlobClient类中的ListBlobsWithPrefix(),但是当我要求特定的Blob Reference时,我希望获得所有元数据.
显示我如何使用Azure blob的代码:
string storageAccountName = "test";
string storageAccountKey = @"testkey";
string blobUrl = "https://test.blob.core.windows.net";
string containerName = "testcontainer";
string blobName = "testbontainer";
var credentials = new StorageCredentialsAccountAndKey(storageAccountName, storageAccountKey);
var cloudBlobClient = new CloudBlobClient(blobUrl, credentials);
var containerReference = cloudBlobClient.GetContainerReference(string.Format("{0}/{1}", blobUrl, containerName));
// OK - Result is of type CloudBlockBlob, cloudBlob_ListBlobs.Properties.LastModifiedUtc > DateTime.MinValue
var cloudBlob_ListBlobs = containerReference.ListBlobs().Where(i => i is CloudBlob && ((CloudBlob)i).Name == blobName).FirstOrDefault() as CloudBlob;
// WRONG - Result is of type CloudBlob, cloudBlob_GetBlobReference.Properties.LastModifiedUtc == …Run Code Online (Sandbox Code Playgroud) 假设我json每天在blob存储中生成几个文件.我想要做的是在我的任何目录中修改最新的文件.所以我的blob中有这样的东西:
2016/01/02/test.json
2016/01/02/test2.json
2016/02/03/test.json
Run Code Online (Sandbox Code Playgroud)
我想得到2016/02/03/test.json.因此,一种方法是获取文件的完整路径并进行正则表达式检查以查找创建的最新目录,但如果josn每个目录中有多个文件,则这不起作用.有没有什么File.GetLastWriteTime比得到最新的修改文件?我正在使用这些代码获取所有文件btw:
public static CloudBlobContainer GetBlobContainer(string accountName, string accountKey, string containerName)
{
CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
// blob client
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// container
CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName);
return blobContainer;
}
public static IEnumerable<IListBlobItem> GetBlobItems(CloudBlobContainer container)
{
IEnumerable<IListBlobItem> items = container.ListBlobs(useFlatBlobListing: true);
return items;
}
public static List<string> GetAllBlobFiles(IEnumerable<IListBlobItem> blobs)
{
var listOfFileNames = new List<string>();
foreach (var blob in blobs)
{
var blobFileName …Run Code Online (Sandbox Code Playgroud) c# azure azure-storage-blobs azure-sdk-.net azure-blob-storage