赞
踩
最近在写通过laravel和vue方式的前后端分离项目,记录一下上传图片文件的一些问题
直接去官网引用组件https://element.eleme.cn/#/zh-CN/component/upload
<el-form-item label="图片:" prop="picture">
<el-upload
class="avatar-uploader"
action="你的接口地址"
//是否显示已上传文件列表,因为我这里是单张,所以不用显示
:show-file-list="false"
//上传成功时调用的钩子
:on-success="handleAvatarSuccess"
//上传图片前的验证
:before-upload="beforeAvatarUpload"
ref="myUpload">
<img v-if="imageUrl" :src="this.imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
data() { return{ imageUrl:'' } } methods: { //上传成功后的调用 handleAvatarSuccess(response) { // ’/storage/image/‘ 这个路径为你后端存储图片的软连接地址 this.imageUrl = '/storage/image/'+response.filepath; this.create_form.picture = this.imageUrl console.log(this.imageUrl) }, beforeAvatarUpload(file) { const isJPG = file.type === 'image/jpeg'; const isLt2M = file.size / 1024 / 1024 < 2; if (!isJPG) { this.$message.error('上传头像只能是 JPG 格式!'); } if (!isLt2M) { this.$message.error('上传头像图片大小不能超过 2MB!'); } return isJPG && isLt2M; }, //清空上传图片列表 clearFiles(){ this.$refs['myUpload'].clearFiles(); } }
//建立你的上传路由 Route::group(['namespace' => 'Admin' , 'prefix' => 'admin' ,],function (){ Route::post('upload','UploadController@upImage')->name('admin.upload'); }); //控制器代码 class UploadController extends Controller { public function upImage(Request $request){ $image = $request->file('file'); if ($image) { //获取文件的原文件名 包括扩展名 $oldname= $image->getClientOriginalName(); //获取文件的扩展名 $extendname=$image->getClientOriginalExtension(); //获取文件的类型 $type=$image->getClientMimeType(); //获取文件的绝对路径,但是获取到的在本地不能打开 $path=$image->getRealPath(); //要保存的文件名 时间+扩展名 $filename=date('Y-m-d') . '/' . uniqid() .'.'.$extendname; //保存文件 配置文件存放文件的名字 ,文件名,路径 $bool= Storage::disk('uploadimg')->put($filename,file_get_contents($path)); //return back(); return json_encode(['status'=>1,'filepath'=>$filename]); } else { return response()->json([], 500, '文件未通过验证'); } } }
运行上传过程会出现419错误是因为Laravel有一个csrf验证
你需要
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\VerifyCsrfToken::class,
]
//
];
protected $except = [
//验证的路由
'admin/upload'
];
当你切换php启动服务端口号的时候,上传图片时会出现
net::ERR_CONNECTION_REFUSED
这时候你要检查el-upload元素action值的端口号是否是你重启服务的端口号
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。