laravel中不同的文件类型和一个输入

时间:2018-09-25 01:49:28

标签: laravel

在我的表单中,我有file input,用户可以在其中上传图片,现在我想使用此输入不仅可以获取图片,还可以使用其他类型的文件,例如zip,{{1 }},pdftxtdoc

代码

我当前的代码仅支持图像

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;
}

问题

  1. 如何在代码中添加其他格式的支持?
  2. 如何设置大小限制{{Form::file('attachment', array('class' => 'form-control'))}}

更新

根据我做出的以下回答:

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; } 文件时不会返回错误,但问题是如果文件不是图像类型,它将不会存储到主机

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

验证

您的验证可能不会起作用,因为松散地说,哑剧不仅是文件扩展名,还是描述文件或文档内容的标头信息。

正确的验证应该是这样的:

"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);

增加上传大小

在位于 etc / php / php.ini 的php.ini文件中,编辑

upload_max_filesize = xM
post_max_size = xM

x 替换为您要设置的新限制。请记住,大小不能大于服务器的大小,否则接下来将出现服务器错误。