2016-12-28 3 views
0

ich versuche, mehrere Bilder mit File.WriteAllBytes() zu speichern, auch nachdem ich versucht habe, zwischen den Speichern mit "Thread.Sleep()" zu trennen, es funktioniert nicht ..Speichern mehrerer Bilder mit File.WriteAllBytes speichert nur die letzte

mein Code:

 byte[] signatureBytes = Convert.FromBase64String(model.Signature); 
     byte[] idBytes = Convert.FromBase64String(model.IdCapture); 

     //Saving the images as PNG extension. 
     FileManager.SaveFile(signatureBytes, dirName, directoryPath, signatureFileName); 
     FileManager.SaveFile(idBytes, dirName, directoryPath, captureFileName); 

Savefile Funktion:

public static void SaveFile(byte[] imageBytes, string dirName, string path, string fileName, string fileExt = "jpg") 
    { 
     if (!string.IsNullOrEmpty(dirName) 
      && !string.IsNullOrEmpty(path) 
      && !string.IsNullOrEmpty(fileName) 
      && imageBytes.Length > 0) 
     { 
      var dirPath = Path.Combine(path, dirName); 

      var di = new DirectoryInfo(dirPath); 

      if (!di.Exists) 
       di.Create(); 

      if (di.Exists) 
      { 
       File.WriteAllBytes(dirPath + [email protected]"\{fileName}.{fileExt}", imageBytes); 
      } 
     } 
     else 
      throw new Exception("File cannot be created, one of the parameters are null or empty."); 
    } 
+1

Was bedeutet * nicht funktioniert *? Erhalten Sie eine Ausnahme? – MarcinJuraszek

+1

Ja kann nur anhand dieses Codebeispiels erraten werden, aber möglicherweise verwenden Sie die gleichen Dateinamen für beide Aufrufe – BlakeH

+0

Die Namen der Dateien sind unterschiedlich, es gibt keine Ausnahmen. Nur Ergebnisse mit 1 Datei am Ende des Programms gespeichert –

Antwort

0

Neben der Möglichkeit, (. wie @ Daniel erwähnt), dass Sie die gleiche Datei sind überschrieben wird, bin ich über diesen Code nicht sicher:

 var di = new DirectoryInfo(dirPath); 

     if (!di.Exists) 
      di.Create(); 

     if (di.Exists) 
     { 
      ... 
     } 

ich, wenn wäre überrascht, di.Create() genannt zu haben, die Exists prope Es wird aktualisiert. In der Tat ist es nicht aktualisiert - ich überprüfte.

Wenn also das Verzeichnis nicht vorhanden war, dann geben Sie den bedingten Teil auch nach dem Erstellen des Verzeichnisses nicht ein. Könnte das dein Problem erklären?

+0

Vielen Dank, Sie sind Recht.. –

2

File.WriteAllBytes():

"Erstellt eine neue Datei, schreibt das angegebene Byte-Array in die Datei und schließt dann die Datei. Wenn die Zieldatei bereits vorhanden ist, wird sie überschrieben“

Als expecify in: https://msdn.microsoft.com/en-ca/library/system.io.file.writeallbytes(v=vs.110).aspx

Also, wenn Sie nur die letzte man sehen kann, werden Sie die Datei überschreiben

+0

Wie ich bereits erwähnt, verwende ich diffrent Byte-Arrays und diffrent Namen für die Dateien .. deshalb bin ich verwirrt darüber –