首页 文章

Azure Media Services限制文件大小

提问于
浏览
1

查看Azure Media Service REST API,我看不到任何限制文件上传大小的方法:

https://docs.microsoft.com/en-us/azure/media-services/media-services-rest-upload-files

例如,我希望用户直接将文件上传到azure,但将其限制为50mb . 我不想先通过我的服务器代理请求,因为这似乎是不必要的带宽使用 .

是否可以使用Azure执行此操作?如果无法直接在Azure上执行此操作,那么间接限制文件上载大小的最佳方法是什么?

3 回答

  • 0

    如果你不需要使用浏览器端验证 . HTML5的File API有答案 .

    来自https://stackoverflow.com/a/4307882/4148708

    if (typeof FileReader !== "undefined") {
        var size = document.getElementById('myfile').files[0].size;
        // check file size
    }
    

    当然,这并不能阻止用户使用像Postman这样的东西来解决限制,但我的意思是,来吧,

    nobody got time for that

    如果您对视频的持续时间而不是原始文件大小更感兴趣,则首先需要代理内容字节 - 请参阅此主题以获取更多信息:
    Verify duration of video which has been uploaded into azure blob

  • 0

    http://wely-lau.net/2012/02/26/uploading-big-files-in-windows-azure-blob-storage-with-putlistblock/,也许这样的东西可以工作(隐含最多64MB):

    protected void btnUpload_Click(object sender, EventArgs e)
    {
        CloudBlobClient blobClient;
        var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
        blobClient = storageAccount.CreateCloudBlobClient();
    
        CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
        container.CreateIfNotExist();
    
        var permission = container.GetPermissions();
        permission.PublicAccess = BlobContainerPublicAccessType.Container;
        container.SetPermissions(permission);
    
        string name = fu.FileName;
        CloudBlockBlob blob = container.GetBlockBlobReference(name);
    
        blob.UploadFromStream(fu.FileContent);
    
        int maxSize = ....;
    
        if (fu.PostedFile.ContentLength > maxSize)
        {
            // Handle error: file too large
        } else {
            blob.UploadFromStream(fu.FileContent); 
        }
    
  • 0

    如果您未使用代理解决方案,则向最终用户公开Azure storage Shared Access signature . 没有与之相关的任何大小限制 . 只有缓解您可以采取的是限制saas签名有效的时间,因此用户有时间限制上传 . 客户端上的任何验证都只能部分缓解上传大文件的问题 . 如前所述,用户可以通过调试客户端脚本从ui获取saas链接,并在时间范围内上传任何内容大小链接有效 .

    Azure存储不会暴露任何api来限制文件上载大小,因此现在只有您的方案的防弹解决方案是使用代理 .

相关问题