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

上传Zip块并在Azure平台上加入它们

邓光赫
2023-03-14
public void SplitFile(){
    int numericUpDown = 100;//in MB
    string PathToCopyChunks = "";  // path to store chunks and ( .bat  ) file
    string FilePathMakeChunks = DirectoryNameToPutScannedData; //the path of file to make chunks.
    try{
        int kbs = numericUpDown * 1024;
        int chunkSize = numericUpDown * 1024 * 1024;
        byte[] buffer = new byte[4096];
        string cmdout = "copy/b ";
        FileStream infile = File.OpenRead(FilePathMakeChunks);
        for (long i = 0; i <= infile.Length / chunkSize; i++)
        {
            string fname = Path.Combine(PathToCopyChunks, Path.Combine(PathToCopyChunks, Path.GetFileName(FilePathMakeChunks)) + "." + chunkSize + "." + i.ToString().PadLeft(4, '0') + ".part");
            string fname_x = Path.GetFileName(FilePathMakeChunks) + "." + chunkSize + "." + i.ToString().PadLeft(4, '0') + ".part";
            if (i == infile.Length / chunkSize)
                cmdout += "\"" + fname_x + "\"";
            else
                cmdout += "\"" + fname_x + "\" + ";
            FileStream outfile = File.Create(fname);
            for (int kb = 0; kb <= kbs; kb++)
            {
                int len = infile.Read(buffer, 0, 1024);
                outfile.Write(buffer, 0, len); 
            }
            outfile.Close();
        }
        cmdout += " \"" + Path.GetFileName(FilePathMakeChunks) + "\"";
        string combinerbatch = Path.Combine(PathToCopyChunks, Path.Combine(PathToCopyChunks, Path.GetFileName(DirectoryNameToPutScannedData)) + "." + chunkSize + ".combine.bat");
        File.WriteAllText(combinerbatch, cmdout);
        MessageBox.Show("Splitting Done...!");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

我正在将这些块与批处理文件一起上传到azure存储容器中,我希望在我的azure容器中运行这个批处理文件来加入块。希望这有助于理解我的问题

我用这段代码上传

string[] array1 = Directory.GetFiles(@"D:\Test");
string fileName = string.Empty;
foreach (string name in array1)
{
    fileName = Path.GetFileName(name);
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);
    var fileStream = System.IO.File.OpenRead(name);
    blockBlob.UploadFromStream(fileStream); 
}

共有1个答案

郎嘉树
2023-03-14

有两件事:

  1. 如果您希望压缩blob存储中的文件,即在blob存储中上传大文件,并期望blob存储在那里压缩这些文件,那么这是不可能的。Blob存储是简单的文件存储。
  2. 如果您有一个大的zip文件,您想要分块上载,然后让blob存储重新组合这些块来创建zip文件,那么这是可能的。

由于您没有提到要使用的技术,所以我将使用Azure REST API来描述这个过程。

 类似资料:
  • 在Bot编辑界面,选择Triggers栏,添加Post-Interation Script,将一下脚本复制进编辑框。配置好自己的User Key,和API Key。 #!/bin/sh IPA_NAME=$(basename "${XCS_ARCHIVE%.*}".ipa) IPA_PATH="${XCS_OUTPUT_DIR}/ExportedProduct/Apps/${IPA_NAME}"

  • 问题内容: 一些旧代码依赖于平台的默认字符集进行翻译。对于“西方世界”中的Windows和Linux安装,我知道这意味着什么。但是考虑到俄罗斯或亚洲平台,我完全不确定其平台的默认字符集是什么(只是UTF-16?)。 因此,我想知道执行以下代码行会得到什么: PS: 我不想在这里讨论字符集的问题及其与Unicode的区别。我只想收集什么操作系统会导致什么特定字符集。请仅发布具体值! 问题答案: 这是

  • 我认为这是缺乏签名密钥,并使用Gradle签名: 有人通过这个问题吗?

  • 我被要求连接到公司大型机上的Db2数据库。我得到了主机名、端口号和数据库。我能够使用Java和IBM JDK版本1.8以及Db2 Universal JDBC驱动程序成功地连接到它。现在我已经连接到它,我如何找出什么是下面躺着的大型机平台。哪里是z/OS、OS/400还是VSE?是否有任何SQL查询可以获得该平台信息?另外,如何找出DB2的版本?

  • 注意,没翻译的这节仅代表作者05年的观点。 As with the UNIX build, the first step to preparing a Windows build is to unpack the source tarball. By default, Windows doesn't know what to do with a .tar.gz file. In fact, if

  • 在客户端,我使用AngularJS: 并呼叫: 在服务器端我使用WebAPI2: