larave异步多图片上传的实现和注意事项及$file的对象函数
要使用多图片上传,首先要在input添加multipart,同时注意name的参数要加[],不然,不算是数组。具体如下,注意绿色地方。如果是单张图片,把[]去掉,不要multiple;
<input type="file" name="up_photos[]" class="form-control-file" v-model="up_photos" multiple>
jquery异步上传
$.ajax({ url: "/base/test", type: 'POST', data: formData, contentType: false, processData: false, success: function (returndata) { console.log(returndata); }, error: function (returndata) { console.log(returndata); } });
控制器里的设置
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; class BaseController extends Controller { public function test(Request $r) { $pathname = "/public/images/".date('Y/m/d'); $photo_paths=[]; if(isset($r->up_photos)){ foreach ($r->up_photos as $key => $photo) { $photo_paths[]=$photo->store($pathname); } } return $photo_paths; } }
其中返回的是图片链接,也可以直接保存到数据库。
有时我们要判断文件类型,下面举例
$file->getClientOriginalName() 这个是取文件名;
$file->getMimeType() 这个是取文件类型 如 image/jpeg