我搜索了又搜索,但没有找到任何例子。
我在 C# .NET Core 中使用 Azure.Storage.Blobs nuget 包。
这是我当前代码不起作用的示例。
我收到状态:413(请求正文太大,超出了最大允许限制。)
搜索似乎表明有 4mb 限制或 100mb 限制,尚不清楚,但我认为追加 Blob 上有 4mb 限制,块 Blob 上有 100mb 限制。
var appendBlobClient = containerClient.GetAppendBlobClient(string.Format("{0}/{1}", tenantName, Path.GetFileName(filePath)));
using FileStream uploadFileStream = File.OpenRead(filePath);
appendBlobClient.CreateIfNotExists();
appendBlobClient.AppendBlock(uploadFileStream);
uploadFileStream.Close();
Run Code Online (Sandbox Code Playgroud)
由于 4mb 的限制,这不起作用,因此我需要附加 4mb 的文件块,但我还没有找到执行此操作的最佳方法的示例。
所以我想找出的是上传大文件的最佳方法,它似乎必须分块完成,对于附加 blob 可能是 4mb,对于块 blob 可能是 100mb,但文档不清楚,也没有示例。
我很难使用新版本的.NET Azure 存储 Blob 客户端库。
我需要的是创建可以写入数据的流,比方说,在流达到 4MB 大小后,我需要上传它。我找到了BlockBlobClient。有两种方法 CommitBlockListAsync 和 StageBlockAsync。这个方法看起来像我需要的,但我找不到一些使用示例。
您知道与我的需求类似的场景吗?或者有人可以帮助我了解这位客户吗?
我需要这样的东西,每4MB阶段,清除流并继续写入:
public class MyStreamWrapper : Stream
{
readonly BlockBlobClient _blockBlobClient;
readonly Stream _wrappedStream;
bool _isCommited;
readonly List<string> _blockIds;
public MyStreamWrapper (BlockBlobClient blockBlobClient)
{
_wrappedStream = new MemoryStream();
_blockBlobClient = blockBlobClient;
_isCommited = false;
_blockIds = new List<string>();
}
public override async Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
{
if ((_wrappedStream.Length + buffer.Length) / 1024 > 4) // check size if
{ …Run Code Online (Sandbox Code Playgroud) 我正在构建一个具有文件上传功能的 .net 应用程序(Azure 应用程序服务),该功能会将 pdf/docx 文件上传到 Azure blob 存储。
我只是想知道如果恶意用户上传了受病毒感染的文件、word 文件中的错误宏,Azure 是否能够扫描并删除/隔离该文件?
在应用程序中,管理员用户将能够使用 URL 下载文件。该文件没有病毒吗?或者,在管理员下载文件后,我是否需要显式调用 Symantec End Point 等防病毒软件。
请让我知道您的专家想法。

I want to get all the folder name under a container using new SDK - Azure.Storage.Blobs
从 django REST API 视图中,我尝试访问存储在 azure 存储 blob 中的文件。我想打开它而不将其下载到文件中,如此处所示。读取访问权限就足够了。
为此,我这样勾勒出我的观点:
import os
from fsspec.implementations.http import HTTPFileSystem
@api_view()
def my_view(request):
url = "https://storageaccount.blob.core.windows.net/container/"
filename = "file.f"
fs = HTTPFileSystem(
container_name=os.environ["AZURE_STORAGE_CONTAINER"],
storage_options={
"account_name": os.environ["AZURE_STORAGE_ACCOUNT"],
"account_key": os.environ["AZURE_STORAGE_KEY"],
},
)
with fs.open(url + filename, "r") as fobj:
ds = somehow.open_dataset(fobj)
return Response({"message": "Data manipulated"}, status=200)
Run Code Online (Sandbox Code Playgroud)
这会给出 FileNotFoundError。
我的问题是:
filesystems django azure django-rest-framework azure-blob-storage
我正在尝试主持一个Angular项目Azure Storage Static Website Azure CDN Verizon Premium
假设我为每个Angular构建都有名为类似的容器v0.3.13.3,并且在该容器中还有角度项目的多语言构建。
我想要实现的是index.html为每个版本和语言提供正确的路由。
您可能会在下面找到示例路线:
my.domain.com/v0.3.13.3应该服务/v0.3.13.3/index.html
my.domain.com/v0.3.13.3/dashboard应该服务/v0.3.13.3/index.html
my.domain.com/v0.3.13.3/fr应该服务/v0.3.13.3/fr/index.html
my.domain.com/v0.3.13.3/fr/dashboard应该服务/v0.3.13.3/fr/index.html
我已经成功地做到了,Azure Standard Rules Engine 如下面的屏幕截图所示。
但据我从文档中看到,在标准规则引擎Contains字段中不能用正则表达式填充。我已经在谷歌上进行了挖掘,但似乎找不到任何适合我的解决方案。
因此,我已将 CDN 服务切换为 Verizon Premium 并尝试应用于(v(?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+))路径正则表达式。
我在使用 Verizon Premium 时遇到的主要问题是,只有URL Rewrite在我将 IF 字段声明为Always
如您所见,URL Rewrite未列出。
我还使用声明进行了几次部署Always ,但没有任何好处。
每个人在博客中分享的唯一示例
所以上面的例子不包括文件扩展名和子路由。
有什么方法可以实现我的目标吗?
提前致谢。
我需要列出“Test”文件夹中特定目录中的所有文件,不包括“Test2”。我尝试使用“test”作为前缀,但它返回两个文件夹。
容器:“myContainer”
测试:
测试2:
我尝试了以下操作,但它返回带有输出的文件夹和路径:
我可以只返回文件而不是路径吗?
文件1.jpg
文件2.jpg
var blobUri = new Uri($"https://{myAccountName}.blob.core.windows.net/");
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(myAccountName, myKey);
BlobServiceClient service = new BlobServiceClient(blobUri, credential);
BlobContainerClient container = service.GetBlobContainerClient("myContainer");
AsyncPageable<BlobItem> blobs = container.GetBlobsAsync(prefix: "test");
List<Result> results = new List<Result>();
await foreach (var blob in blobs)
{
var result = new Result();
result.FileName = blob.Name;
results.Add(result);
}
Run Code Online (Sandbox Code Playgroud)
尝试使用curl命令上传到blob存储
curl --upload-file <file> --url "https://<storage-account-name>.blob.core.windows.net/<container-name>/<file>"
Run Code Online (Sandbox Code Playgroud)
但不断收到“HTTP/1.1 404 指定的资源不存在”。我将存储和容器都公开,容器的访问级别设置为“容器”,不知道还可以尝试什么。我错过了什么吗?
我正在开发一个企业业务项目,需要将应用程序从本地迁移到 Azure 云。
某些应用程序需要 Azure Blob 存储。所有 Azure 云基础设施都可以使用 Manage Identity 进行访问,业务要求是在无法访问 Azure 门户的情况下测试和验证 Azure Blob 方法,开发人员只能访问任何非生产或生产的存储资源。也就是说,该公司要求我们在将代码推送到云之前通过在本地和 GitHub 工作流程上进行测试来使所有存储功能正常工作。
当然,我可以启动我的个人 Azure 帐户并使用它,但仍然会使用我的帐户作为游乐场进行测试,但并不是真正可用的测试。
通用测试 Azure Blob 存储的整个想法,无需对 Blob 存储有任何类型的访问权限。
这可能吗?我怎样才能实现这一目标?
以下是我针对 Azure Blob 的工作 POC 方法:
private readonly BlobContainerClient _blobContainerClient;
public AzureBlobStorage(string connectionString, string container)
{
_blobContainerClient = new BlobContainerClient(connectionString, container);
_blobContainerClient.CreateIfNotExists();
}
public async Task<string> ReadTextFile(string filename)
{
var blob = _blobContainerClient.GetBlobClient(filename);
if (!await _blobContainerClient.ExistsAsync()) return string.Empty;
var reading = await blob.DownloadStreamingAsync();
StreamReader reader = new StreamReader(reading.Value.Content);
return await reader.ReadToEndAsync(); …Run Code Online (Sandbox Code Playgroud) 我的应用程序允许用户输入 Azure Blob 存储 SAS URL。我将如何去验证它?我正在使用Azure 存储 Blob 客户端库,并且似乎没有任何方法可以在不实际执行 Blob 操作(我不想这样做)的情况下验证 SAS URL。
验证操作可以是异步的,并在必要时涉及 API 调用(即可以通过按钮触发)。
public class SASURLValidator
{
public async Task<bool> ValidateSASURL(string sasURL)
{
// What goes here?
}
public async Task Test()
{
var result = await ValidateSASURL("https://blobstorageaccountname.blob.core.windows.net/containerName?sp=w&st=2022-02-15T02:07:49Z&se=2022-03-15T10:07:49Z&spr=https&sv=2020-08-04&sr=c&sig=JDFJEF342JDSFJIERJsdjfkajiwSKDFJIQWJIFJSKDFJWE%3D")
// result should be true if the above is a valid SAS
}
}
Run Code Online (Sandbox Code Playgroud) .net c# azure-storage azure-blob-storage shared-access-signatures