У меня есть элемент управления FileUpload. Я пытаюсь сохранить загруженный файл (изображение), а также сохранить несколько миниатюрных копий файла.
Когда я пытаюсь что-то вроде этого:
System.Drawing.Image imgOriginal = System.Drawing.Image.FromStream (PhotoUpload.PostedFile.InputStream);
Я получаю «System.ArgumentException: параметр недействителен».
Я также пытался использовать PhotoUpload.FileBytes для создания изображения из байтов файла вместо InputStream, но возникает та же ошибка.
Загруженный файл является jpg. Я знаю, что это действительный JPG, так как он сохраняет оригинал в порядке.
Редактировать: этот код действительно работает. Недопустимый параметр был вызван тем, что PhotoUpload.PostedFile.InputStream был пустым ... что, похоже, является совершенно другой проблемой. Похоже, что после сохранения оригинала поток загрузки файла исчезает.
Редактировать: Обнаружено, что InputStream для FileUpload может быть прочитан / использован только один раз, а затем исчез.
Чтобы обойти это, я сохранил байты fileupload file в байтовый массив и использовал байтовый массив для создания копий изображения.
Код:
// Copy the FileBytes into a byte array
byte[] imageData = PhotoUpload.FileBytes;
// Create a stream from the byte array if you want to save it somewhere:
System.IO.Stream myStream = new System.IO.MemoryStream(imageData);
// Or create an image from the stream as many times as needed:
System.Drawing.Image imgOriginal = System.Drawing.Image.FromStream(myStream);