Umair Nafis Ответов: 1

Можно ли использовать элемент управления загрузкой файлов для одновременной загрузки только изображений и видео?


Код отлично работает только для нескольких изображений/нескольких видео. Но что делать, если я хочу загрузить несколько изображений с несколькими видео в один файл управления загрузкой, так что только изображения и видео могут быть загружены из этого элемента управления и ничего больше.
Обратите внимание, что я сохраняю путь к изображению в базе данных SQl server и изображение в asp.net папка.

Заранее спасибо.

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

 <div class="form-group">
                                    <div class="col-sm-2">
                                        <asp:Label ID="lblUpload" runat="server" Text="Upload Photo/Video" CssClass="form-control"></asp:Label>
                                    </div>
                                    <div class="col-sm-6">
                                        <asp:FileUpload ID="FileUploadBlog" runat="server" CssClass="fileinput fileinput-new" AllowMultiple="true" />
                                    </div>
<pre><div class="col-sm-12">
                                        <asp:Button ID="btnBlogPost" runat="server" Text="Post" CssClass="btn btn-facebook" OnClick="btnBlogPost_Click" />
                                    </div>
                                    <div class="col-sm-4">
                                        <asp:Label ID="lblErrorUplaod" runat="server" Visible="false" CssClass="label-danger">
                                    </div>



С фоновым кодом:
 string ext = System.IO.Path.GetExtension(this.FileUpload.PostedFile.FileName);
foreach (var file in FileUpload.PostedFiles)
{
   if (ext == ".jpeg" || ext == ".png" || ext == ".bmp" || ext == ".jpg")
   {
      if (FileUpload.PostedFile.ContentLength > 0 && FileUpload.PostedFile.ContentLength <= 625000)
      {.............................}
      else if (ext == ".mpeg4" || ext == ".mp4" || ext == ".3gp" || ext == ".flv")
      {
          if (FileUpload.PostedFile.ContentLength > 0 && FileUpload.PostedFile.ContentLength <= 625000)
         {.............................}
      }

1 Ответов

Рейтинг:
0

GKP1992

Ну, вы можете использовать атрибут "accept" элемента управления загрузкой файлов, где вы можете указать все допустимые расширения файлов, которые вы хотите. После этого в окне браузера будут отображаться только файлы, соответствующие расширениям, доступным для загрузки.
Но это не является надежным, так как пользователь может свободно выбирать все типы файлов в раскрывающемся списке и выбирать любой файл, который он хочет.

Если вы хотите ограничить выбор Пользователем недопустимых типов файлов, вы можете написать свой собственный компонент.


Umair Nafis

Ну, я тоже пробовал эту проверку, но строка ext = System.IO.Path.GetExtension(this.Загрузка файлов.PostedFile.FileName); принимает только одно расширение, которое выбирается первым. т. е. если я сначала выбираю файл изображения формата jpg, то выбираю видеофайл формата mp4, чем ext берет только .jpg и выполняет только jpg часть кода, а в базу данных вставляется изображение, но столбец видео имеет нулевое значение и наоборот.

GKP1992

Да, я пропустил то, что ты хотел загрузить несколько файлов. В этом случае регулярное выражение вам не пригодится.
Кроме того, вам нужно задать себе несколько вопросов, например, если вы выбираете несколько файлов и некоторые из них недействительны, что должно произойти? Должен ли валидатор принимать только допустимые файлы или он должен отбросить их все?
Я обновлю anwser.

Umair Nafis

Проблема в том, что ни о нескольких файлах, ни о допустимых или недопустимых файлах, проблема в том, что когда я загружаю 2 файла 1 *.jpg файл и другой файл *.mp4, то независимо от того, что я выбираю первый файл в fileupload control, он вставляет только тот файл, который был выбран первым, и я хочу вставить оба файла в разные цвета таблицы базы данных, то есть путь изображения в image coloumn и путь видео в video coloumn.

Я также попробовал "string ext = System.IO.Path.GetExtension(this.Загрузка файлов.PostedFile.FileName) " под циклом foreach затем сначала он успешно вставляет файл изображения, а затем снова для второго цикла файла начинает с принятия значения. mp4 и выполнения оператора If тела .jpg. и вставьте видео путь в изображение coloumn.

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