问题描述
嗨,我想从 vue js 应用程序将文件上传到 laravel 的本地公共目录,并且只在提交表单时将 唯一名称 发送到 MysqL。但不知道如何用 js 做到这一点
// template tag
<input type="file" @change="uploadFile" >
// methods on Vue Js app
methods: {
uploadFile(){
// logic to upload the file in local public disk and only send the unique name to MysqL
}
}
解决方法
我认为你仍然应该为此制作一个 API。并通过api上传
我这里有一个代码,也许可以帮到你。只需将其添加到您的 Laravel 控制器中即可。
$user = User::find($request->user_id);
if ($request->file('profile_image') !== null) {
$imageProfile = $request->file('profile_image');
$imageProfileSanitizedName = time() . $imageProfile->getClientOriginalName();
$imageProfile->move("images/",$imageProfileSanitizedName);
$user->image = $imageProfileSanitizedName;
}
$user->save();
这个功能
$imageProfile->move("images/",$imageProfileSanitizedName);
将移至
Laravel 项目的 public/images 目录。
我添加了 time()
函数以便图像文件是唯一的。
不要忘记在 vuejs 方法的 axios 中使用 formData。