当前位置: 首页 > 知识库问答 >
问题:

如何在Java中将appendblob/大于4MB限制的文件上传到Azure storage/blob中?

太叔天宇
2023-03-14

然而,库似乎不能为AppendBlob做同样的事情,那么如何手动完成这个分块呢?基本上,我认为这需要将InputStream分成更小的批...

使用Azure Java SDK 12.14.1

共有1个答案

卢承弼
2023-03-14

受以下SO中的答案启发(与在C#中这样做有关):c-sharp-azure-appendblob-appendblock-adding-a-file-larger-the-4MB-limit

...我在Java中是这样做的:

    AppendBlobRequestConditions appendBlobRequestConditions = new AppendBlobRequestConditions()
            .setLeaseId("myLeaseId");
    
    try (InputStream input = new BufferedInputStream(
            new FileInputStream(file));) {
        byte[] buf = new byte[AppendBlobClient.MAX_APPEND_BLOCK_BYTES];
        int bytesRead;
        while ((bytesRead = input.read(buf)) > 0) {
            if (bytesRead != buf.length) {
                byte[] smallerData = new byte[bytesRead];
                smallerData = Arrays.copyOf(buf, bytesRead);
                buf = smallerData;
            }
            try (InputStream byteStream = new ByteArrayInputStream(buf);) {
                appendBlobClient
                        .appendBlockWithResponse(byteStream, bytesRead,
                                null, appendBlobRequestConditions, null,
                                null);
            }
        }
    }

当然,在此之前您需要做很多事情,比如确保AppendBlob存在,如果不存在,则在尝试追加任何数据之前创建它。

 类似资料:
  • 所以我想知道的是上传大文件的最好方法,它似乎必须分块完成,对于追加blobs,可能是4MB,对于块blobs,可能是100MB,但是文档不清楚,也没有示例。

  • 问题内容: 我得到这个错误说 上传大约30MB的视频时, 这是设置代码 不确定如何设置maxFieldsSize属性,需要一些帮助!!! 问题答案: Express使用连接中间件,您可以使用以下命令指定文件上传大小 连接限制中间件

  • 我犯了个错误 当上传一段大约30MB的视频时, 这里是设置代码 我不知道如何设置maxFieldsSize属性,需要帮助!!!

  • 问题内容: 我有一个上传表单,正在检查文件大小和文件类型,以将上传的文件限制为2 MB,以及.pdf,.jpg,.gif或.png文件类型。我的目标是在用户违反这些规则之一的情况下向他们显示警报消息。 有四种方案: 正确的尺寸/正确的类型(工作中) 正确的尺寸/不正确的类型(工作中) 尺寸/类型 不 正确( 不起作用 ) 不正确的大小/ 不正确的 类型( 不起作用 ) 使用我当前的代码,即使文件类

  • 问题内容: 我增加了Macbook Pro的最大文件限制,以便Elasticsearch可以处理更多文件,但是不起作用。 我运行命令’ulimit -a’,它说“打开文件”是100,000。我可以运行一个简单的shell脚本,如下所示: 而且我能够创建很多文件(在杀死脚本之前已超过60,000)。 但是,使用Java代码在“ / tmp”目录的空子目录中创建RandomAccessFiles,在得

  • 问题内容: 在客户端,用户使用RecordRTC录制短视频。当用户按下上载时,我将使用来获取视频的数据,并将其上载到我的服务器(使用Rails和回形针处理文件上载)。 首先,我想将字段值更改为数据。事实证明,为了确保浏览器的安全性,我无法使用javascript对其进行更改。 然后,我尝试使用AJAX: 但是,它不起作用。 在档案上,我将得到以下内容,无法处理: 如果我正常使用提交,则参数将如下所