другой тип файла и один вход в laravel - PullRequest
0 голосов
/ 25 сентября 2018

в моей форме у меня есть file input, где пользователь может загрузить изображение, теперь я хочу использовать этот ввод, чтобы иметь возможность не только получать изображения, но и другие типы файлов, такие как zip, pdf, txt, doc и docx

Код

мой текущий код поддерживает только изображения

//validation
"attachment" => "nullable:image",

//function
if ($request->hasFile('attachment')) {
  $attachment = $request->file('attachment');
  $filename = 'project-attachment' . '-' . time() . '.' . $attachment->getClientOriginalExtension();
  $location = public_path('images/' . $filename);
  Image::make($attachment)->resize(1300, 362)->save($location);
  $project->attachment = $filename;
}

форма

{{Form::file('attachment', array('class' => 'form-control'))}}

Вопрос

  1. Как мне добавить поддержку других моих форматов в мой код?
  2. Как сделать ограничения размера 3 MB?

ОБНОВЛЕНИЕ

основываясь на ответе ниже, я сделал:

//validation

"attachment" => "nullable|mimetypes:image/jpeg,application/pdf,image/gif,image/png,text/plain,application/msword,application/zip|max:3000",

и мою функцию

if ($request->hasFile('attachment')) {
  $attachment = $request->file('attachment');
  $filename = 'project-attachment' . '-' . time() . '.' . $attachment->getClientOriginalExtension();
  $location = public_path('images/' . $filename);

  $valid_images = ['image/jpeg','image/gif','image/png'];
  if(in_array($_FILES['attachment']['type'], $valid_images)){
    Image::make($attachment)->resize(1300, 362)->save($location);
  }

  $project->attachment = $filename;
}

Этот код выше загружает изображения и не возвращает ошибку, когда я загружаю, например, файл zip, нопроблема в , если файл не относится к типу изображения, он не будет сохранен на хосте

Есть идеи?

1 Ответ

0 голосов
/ 25 сентября 2018

Проверка

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

Правильная проверка должна выглядеть примерно так:

"attachment" => "nullable|'mimetypes:image/jpeg,application/pdf ..'|max:3000",

Вы можете добавить остальное, ссылаясь здесь: https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

Что касается ошибки об изображении

Вы должны выполнять части, относящиеся к изображению, только если загруженный файл фактически является изображением.Для этого вы должны создать массив мимов для изображений JPG, PNG, GIF или WebP.

$valid_images = ['image/jpeg','',''];
if(in_array($_FILES['attachment']['type'], $valid_images)){
     //Code Related to Images
     Image::make($attachment)->resize(1300, 362)->save($location);
}

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

$attachment->storeAs($location,$filenaem);

Увеличение размера загрузки

В файле php.ini, расположенном по адресу etc / php / php.ini изменить

upload_max_filesize = xM
post_max_size = xM

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...