Пытаюсь работать с Request.Files в WebMatrix

каждый,

Я пытаюсь работать с загрузкой изображений на свой сайт, и я успешно заставил его работать, однако мне нужно расширить функциональность за пределы одного простого изображения. В примерах, которые я видел, используется помощник по файлам WebMatrix (помощник по файлам? Верно? Ну, это своего рода помощник, который автоматически рисует html, необходимый для поля input=type"file"). Строка кода у меня есть в виде:

@FileUpload.GetHtml(initialNumberOfFiles:1, allowMoreFilesToBeAdded:false, includeFormTag:false)

Строка кода, которую я имею в (IsPost):

var UploadedPicture = Request.Files[0];
    if(Path.GetFileName(UploadedPicture.FileName) != String.Empty)
    {
        var ContentType = UploadedPicture.ContentType;
        var ContentLength = UploadedPicture.ContentLength;
        var InputStream = UploadedPicture.InputStream;
        Session["gMugshot"] = new byte[ContentLength];
        InputStream.Read((byte[])Session["gMugshot"], 0, ContentLength);
    }
    else
    {
        Session["gMugshot"] = new byte[0];
    }

Дополнительный код в (IsPost) после этого сохраняет его в базе данных как двоичные данные, и я могу вернуть изображение на страницу из этого (у меня нет желания сохранять фактические файлы изображений в папке на сервере и использовать GUID и т. д. и т. д. Двоичные данные — это хорошо, и я думаю, что они занимают намного меньше места).

Я настроил его для прокрутки изображений с возможностью щелчка с помощью jQuery для считывания щелчков созданных вручную кнопок, а затем скрытия и отображения div, содержащих изображения, визуализированные C # (что получает их от чтения базы данных). Извините, если это немного TMI, просто пытаюсь быть тщательным, но уточнить вопрос: я еще недостаточно знаю о загрузке файлов, чтобы знать, как хорошо работать с загруженными данными. Я попытался изучить эту информацию, но не нашел никакой информации, которая показалась бы мне актуальной (на самом деле, я вообще не нашел много полезной информации о типе ввода = "файл" или методе FileUpload).

Было бы лучше использовать input type="file" id="pic1id"? Есть ли что-то, что я могу использовать, например Request.Files["pic1id"], которое могло бы получить файл из идентификатора входного элемента? Или программа просто берет все загруженные файлы, складывает их в логистическую группу где-то в ожидании вызова по индексу вроде этого: "Request.Files[0]". Если да, то в каком порядке ставится индекс? Нужно ли использовать Request.Files.Count для проверки количества загруженных файлов, прежде чем я начну работать с данными?

Обратите внимание, что мне нужны отдельные поля ввода type="file" (независимо от того, построены ли они помощником или нет). Я не хочу принимать несколько файлов в один вход (в основном из-за недостатка знаний, например, я боюсь, что не буду знать, как работать с данными). На данный момент планируется, что отдельные поля input type="file" будут находиться внутри div, которые будут скрыты/отображены при прокрутке изображений, поэтому каждое изображение (пробел) будет иметь свое собственное поле input type="file". Скрытие и отображение элементов div, отображение (одного) изображения, сохранение и получение двоичных данных из базы данных, а также выбор заполнителей изображений — все это прекрасно работает. В значительной степени мне просто нужно знать, как работать с более чем одним загруженным изображением за раз для хранения в их отдельных полях «изображения» базы данных.

Любые примеры синтаксиса, которые мне нужно использовать, будут высоко оценены.

Извините, что так много вопросов, но я просто не мог найти много полезной информации по этому поводу.

Спасибо всем, кто пытается помочь!


person VoidKing    schedule 23.10.2012    source источник
comment
возможный дубликат Получить опубликованные файлы отдельно в WebMatrix   -  person Jon Clements♦    schedule 27.10.2012


Ответы (1)


Хорошо, чтобы решить эту проблему, мне пришлось тестировать, тестировать и тестировать, пока что-то, наконец, не сработало для меня. Вот что я сделал:

Во-первых, я отказался от использования той части хелпера, которая рисовала html, то есть вынул:

@FileUpload.GetHtml(initialNumberOfFiles:1, allowMoreFilesToBeAdded:false, includeFormTag:false)

И добавил обычный ввод type="file" с определенным идентификатором, например id="pic1".

Затем я смог получить публикацию отдельного файла на основе идентификатора, что было действительно главным, что мне нужно было знать, как это сделать, и это действительно было так просто:

Request.Files["pic1"];
person VoidKing    schedule 29.10.2012
comment
Спасибо за публикацию вашего решения. Рад, что ты разобрался. - person spike.y; 12.05.2014
comment
@spike.y Нет проблем! Рад, что ты хоть немного пригодился! - person VoidKing; 12.05.2014