teledexterus Ответов: 1

Как сохранить изображение из fileupload в папку на корневом диске


Я пытаюсь загрузить файл изображения в "~ / Pictures/". FileUpload работал из-за ненулевого имени изображения и ext. В результате ни одно изображение не сохраняется в "~ / Pictures/ " без сообщения об ошибке.
if (FileUpload1.HasFile)
            {
                string imagename = System.IO.Path.GetFileName(FileUpload1.FileName);
                Label1.Text = imagename;
                string ext = System.IO.Path.GetExtension(FileUpload1.FileName);
                Label2.Text = ext;
                string imagefile = Server.MapPath("Pictures/" + imagename);
                byte[] Image = null;
                if (ext == ".jpg" | ext == ".gif" | ext == ".png" | ext == ".bmp")
                {
                    Image = new byte[FileUpload1.PostedFile.ContentLength];
                    HttpPostedFile UploadedImage = FileUpload1.PostedFile;
                    UploadedImage.InputStream.Read(Image, 0, (int)FileUpload1.PostedFile.ContentLength);
                    UploadedImage.SaveAs(imagefile);
                }
            }


Что я уже пробовал:

Попробовал Filestreaming изображение byte [].

Richard MacCutchan

Каково значение ext в вашем операторе if?

teledexterus

.формат JPG

1 Ответов

Рейтинг:
2

OriginalGriff

Во-первых, вы не сохраняете данные в корне своего сайта:

string imagefile = Server.MapPath("Pictures/" + imagename);
Путь, который вы получите от этого, будет относительно местоположения текущей страницы - если вы хотите абсолютный путь, вам нужно указать корневую папку:
string imagefile = Server.MapPath("~/Pictures/" + imagename);

Во-вторых, как говорит Ричард, вам нужно проверить свое расширение: строки C# по умолчанию чувствительны к регистру, поэтому ".JPG" - это не то же самое, что, например,". jpg". Windows не заботится о случае с именами файлов или расширениями, но C# заботится!
В-третьих, почему вы читаете поток, когда вы можете просто получить байты непосредственно через Загрузка файлов.Свойство FileBytes (System .Web. UI.WebControls)[^]- Я не уверен, что метод SaveAs перематывает поток, который Вы читаете в массив изображений.


teledexterus

В ДОБ есть ".Форматы jpg" не ".в JPG". "imagename" - это IMG087.JPG все в шапках. Попробовал пример FileUpload.Свойство FileBytes (System.Web.UI.WebControls)[^] и оно не сработало, перейдя непосредственно к FileUpload1.SaveAs(imagefile); пропуская изображение как байт [].

OriginalGriff

Так что ... строки не совпадут, и это ничего не спасет.
Попробуйте сначала использовать ToLower, чтобы получить соответствующие расширения.

OriginalGriff

О, так и должно быть
х == ".форматы jpg" || х == ".ПНГ"
Нет
х == ".форматы jpg" | х == ".ПНГ"
Пример, который вы показываете, не будет компилироваться.