Lorsque je télécharge un fichier image sur un blob, l'image est téléchargée avec succès (sans erreur). Quand je vais au studio de stockage en nuage, le fichier est là, mais avec une taille de 0 (zéro) octet.Stockage Azure: fichiers téléchargés avec des octets de taille zéro
Voici le code que j'utilise:
// 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));
Avant le fichier image est téléchargé sur le stockage, la InputStream propriété du HttpPostedFileBase semble être bien (la taille de la de l'image correspond à ce qui est attendu! Et aucune exception n'est levée).
Et la chose vraiment étrange est que cela fonctionne parfaitement dans d'autres cas (téléchargement de Power Points ou même d'autres images du rôle de travailleur). Le code qui appelle la méthode SetContent semble être exactement le même et le fichier semble être correct car un nouveau fichier avec zéro octets est créé à l'emplacement correct.
Quelqu'un a-t-il des suggestions s'il vous plaît? J'ai débogué ce code des dizaines de fois et je ne vois pas le problème. Toutes les suggestions sont les bienvenues!
Merci
Pour clarifier un peu, lorsque vous travaillez avec un flux, assurez-vous que vous définissez la propriété Position du flux à 0 après le chargement quels que soient les octets qu'il contient. Par défaut, la position d'un flux sera définie à la fin de son contenu pour une raison quelconque. – Dusda
Oui, c'est quelque chose que je suis toujours conscient maintenant et je ne perds jamais plus d'une seconde pour m'en souvenir. Merci! –
Il l'a fait, merci :) –