私はそれを知りたい..大きな Zip ファイルのチャンクを作成し、すべてのチャンクをコンテナー BLOB の Azure Cloud Storage にアップロードするとします。Azure Platform でこれらのチャンクに参加できますか? チャンクのために、チャンクを再結合するための.batファイルも生成するこのコードを使用しています..
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);
}