版本: 2.6.10
Laravel 版本: 6.0
我正在使用这个vue 上传包,在客户端一切正常(至少我是这么认为的)。但是在我使用 laravel 的服务器端,有一些问题。
这是我的 vue 发送方法:
setImage: function (file) {
let formData = new FormData();
formData.append('file', file);
axios.post(upload_route, formData , {
headers: { 'Content-Type': 'multipart/form-data' }
})
.then(response => {
// upload successful
})
.catch(error => console.log(error));
},
Run Code Online (Sandbox Code Playgroud)
这是我的服务器端方法:
public function upload(Request $request){
$path = $request->file('file')->store('avatars');
return response('upload success' , 200);
}
Run Code Online (Sandbox Code Playgroud)
当我将文件上传到服务器时,它给了我这个错误:
"message": "在 null 上调用成员函数 store()",
我在setImage
函数中发送的文件对象是这样的(如果我用 console.log 记录它):
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE...
Run Code Online (Sandbox Code Playgroud)
nmf*_*one 12
我相信file
参数 onsetImage
不是一个File
对象。所以$request->file('file')
is null
,因为你附加了一个string
(base64),而不是一个文件。
您告诉我们输出console.log
是 base64 路径,然后您需要将其 (base64) 转换为文件。
由于您使用的是 Laravel,因此技术如下:
use Illuminate\Support\Str;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
use Symfony\Component\HttpFoundation\File\File;
.....
$base64File = $request->input('file');
// decode the base64 file
$fileData = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $base64File));
// save it to temporary dir first.
$tmpFilePath = sys_get_temp_dir() . '/' . Str::uuid()->toString();
file_put_contents($tmpFilePath, $fileData);
// this just to help us get file info.
$tmpFile = new File($tmpFilePath);
$file = new UploadedFile(
$tmpFile->getPathname(),
$tmpFile->getFilename(),
$tmpFile->getMimeType(),
0,
true // Mark it as test, since the file isn't from real HTTP POST.
);
$file->store('avatars');
Run Code Online (Sandbox Code Playgroud)
更新
由于您使用的是vue-image-upload-resize,我查看了它内置函数的文档以将输出从 base64 更改为 blob,因此您只需:
<image-uploader
...
output-format="blob"
... />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5475 次 |
最近记录: |