Je veux savoir que ... Si je fais des morceaux d'un gros fichier Zip et que je télécharge tous les morceaux sur Azure Cloud Storage dans Container Blobs. Puis-je rejoindre ces blocs sur Azure Platform? pour Chunking je suis en utilisant ce code qui génère également le fichier .bat pour rejoindre les morceaux ..Télécharger des morceaux Zip et les rejoindre sur Azure Platform
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());
}
}
Je suis en train de charger ces morceaux avec fichier batch dans le conteneur de stockage d'azur et je veux exécuter ce fichier batch à mon récipient azur pour joindre des morceaux. espère que cela aidera à comprendre ma question
Je me sers de ce code pour Téléchargement
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);
}
Pourriez-vous décrire plus en détail la raison pour laquelle vous devez séparer les morceaux, les télécharger sur différents blobs, les télécharger, puis les rejoindre? Est-ce une question de perf ou d'une autre raison spécifique à l'application? –
@Emily Parce que mon fichier est d'environ 10 Go, c'est pourquoi je fais des morceaux. Dans les morceaux, le téléchargement est facile avec une faible vitesse Internet. ou si j'ai besoin d'un téléchargement parallèle à l'avenir, l'aide sera complète. –
Si vous utilisez la méthode de la bibliothèque client UploadFromStream (comme vous le voyez), elle sera tronquée pour vous et transférée en parallèle si vous définissez le facteur de parallélisme sur> 1. Y at-il une raison pour laquelle cela ne fonctionne pas pour vous? –