Quando si carica un file di immagine su un BLOB, l'immagine viene caricata apparentemente correttamente (nessun errore). Quando vado su cloud storage studio, il file è lì, ma con una dimensione di 0 (zero) byte.Archiviazione di Azure: file caricati con dimensione zero byte
Il seguente è il codice che sto usando:
// These two methods belong to the ContentService class used to upload
// files in the storage.
public void SetContent(HttpPostedFileBase file, string filename, bool overwrite)
{
CloudBlobContainer blobContainer = GetContainer();
var blob = blobContainer.GetBlobReference(filename);
if (file != null)
{
blob.Properties.ContentType = file.ContentType;
blob.UploadFromStream(file.InputStream);
}
else
{
blob.Properties.ContentType = "application/octet-stream";
blob.UploadByteArray(new byte[1]);
}
}
public string UploadFile(HttpPostedFileBase file, string uploadPath)
{
if (file.ContentLength == 0)
{
return null;
}
string filename;
int indexBar = file.FileName.LastIndexOf('\\');
if (indexBar > -1)
{
filename = DateTime.UtcNow.Ticks + file.FileName.Substring(indexBar + 1);
}
else
{
filename = DateTime.UtcNow.Ticks + file.FileName;
}
ContentService.Instance.SetContent(file, Helper.CombinePath(uploadPath, filename), true);
return filename;
}
// The above code is called by this code.
HttpPostedFileBase newFile = Request.Files["newFile"] as HttpPostedFileBase;
ContentService service = new ContentService();
blog.Image = service.UploadFile(newFile, string.Format("{0}{1}", Constants.Paths.BlogImages, blog.RowKey));
Prima che il file immagine viene caricato per la memorizzazione, l'InputStream Proprietà dal HttpPostedFileBase sembra essere fine (la dimensione della dell'immagine corrisponde a cosa è previsto! E nessuna eccezione viene lanciata).
E la cosa davvero strana è che questo funziona perfettamente in altri casi (caricando Power Point o anche altre immagini dal ruolo di lavoratore). Il codice che chiama il metodo SetContent sembra essere esattamente lo stesso e il file sembra essere corretto poiché viene creato un nuovo file con zero byte nella posizione corretta.
Qualcuno ha qualche suggerimento per favore? Ho eseguito il debug di questo codice dozzine di volte e non riesco a vedere il problema. Qualsiasi suggerimento è benvenuto!
Grazie
Per chiarire un po ', quando si lavora con un flusso, verificare che si imposta proprietà Posizione del torrente a 0 dopo aver caricato qualunque byte in esso. Per impostazione predefinita, la posizione di un flusso verrà impostata alla fine del suo contenuto per qualche motivo. – Dusda
Sì, è qualcosa che sono sempre consapevole adesso e non mi lascio mai più di un secondo per ricordarlo. Grazie! –
Sì, grazie :) –