Php 在laravel中使用formData和axios上载文件时出现问题
我在laravel中使用formdata和axios上传了文件。但检索文件时出现问题 脚本代码:Php 在laravel中使用formData和axios上载文件时出现问题,php,laravel,axios,Php,Laravel,Axios,我在laravel中使用formdata和axios上传了文件。但检索文件时出现问题 脚本代码: let formData = new FormData(); formData.append('myfile', self.files); axios({ method: 'POST', url: '/api/save', data: formData, headers: { 'Content-Type': 'multipart/form-data'
let formData = new FormData();
formData.append('myfile', self.files);
axios({
method: 'POST',
url: '/api/save',
data: formData,
headers: {
'Content-Type': 'multipart/form-data'
},
}).then(function (res) {
console.log(res.data);
});
我在MyController检索:
public function save(Request $request) {
$response = array();
$response['a'] = $request->file('myfile')
$response['b'] = $request->myfile;
return Response::json($response);
}
然后,签入控制台:
{a: null, b: "[object File]"}
a: null
b: "[object File]"
__proto__: Object
我不知道为什么它是使用动态属性而不是使用文件方法尝试将以下内容添加到标题中:
'contentType': false,
'processData': false
我以这种方式使用Vue在Laravel中上载文件 路由(api.php) 控制器
public function upload(Request $request){
$user = User::create($request->only('name'));
if($request->image) {
$filename ='_logo_' . str_random(40);
//make directories in public folder as public->uploads->users
$imagePath = '/uploads/users/' . $filename;
//use intervention/image package to handle images
Image::make($request->image)->save(public_path($imagePath));
$user->image = $filename;
$user->save();
}
return response()->json(['status' => 'success','message' => 'Image was uploaded successfully'],200);
}
Vue.js
模板
<template>
<div class="container">
<form class="needs-validation" novalidate @submit.prevent="uploadImage()">
<div class="col-md-6 mb-3">
<input type="file" @change="onFileChange" />
<div class="card" style="width: 18rem;">
<img class="card-img-top" :src="logo" alt="Card image cap">
</div>
</div>
<button class="btn btn-primary btn-lg btn-block" type="submit">Upload</button>
</form>
</div>
</template>
试试这个
uploadPhoto: function(){
let that = this;
let formData = new FormData();
formData.append('file', that.photo.file);
axios.post( '/api//save_photo',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
).then(function(response){
that.errors = response.data.success;
})
.catch(function(){
console.log('FAILURE!!');
});
}
use Carbon\Carbon;
use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Str;
use Image;
use File;
protected function saveFilms(Films $request)
{
$dir_path = 'uploads/images';
$dir_path_resize = 'uploads/images/45x45';
if( $request ){
$filmsObj = new Film();
if (!File::exists($dir_path))
{
File::makeDirectory($dir_path, 0775, true);
}
if (!File::exists($dir_path_resize))
{
File::makeDirectory($dir_path_resize, 0775, true);
}
if ( $request->file ) {
$file = $request->file;
$extension = $file->getClientOriginalExtension();
$file_name = 'films_'.\Carbon\Carbon::now().'.'.$extension;
$file->move($dir_path, $file_name);
$image = Image::make(public_path($dir_path.'/'.$file_name));
$image->resize(null, 45, function ($constraint) {
$constraint->aspectRatio();
});
$image->save(public_path($dir_path_resize.'/'.$file_name));
}
return $return_array;
}
}
试试上面的代码,希望能奏效 推杆不支撑,如变戏法支撑杆:
let frm = = new FormData;
frm.append("_method", "put");
frm.append("key_name", value);
axios.post(url, frm).then(res => { }
我喜欢你用“那个”而不是“你自己”或其他东西。当我读Photo File变量时说“That Photo File”时,我真的说不出话来。在这里可以使用FormData的部分在哪里?在
uploadImage
方法中
uploadPhoto: function(){
let that = this;
let formData = new FormData();
formData.append('file', that.photo.file);
axios.post( '/api//save_photo',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
).then(function(response){
that.errors = response.data.success;
})
.catch(function(){
console.log('FAILURE!!');
});
}
use Carbon\Carbon;
use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Str;
use Image;
use File;
protected function saveFilms(Films $request)
{
$dir_path = 'uploads/images';
$dir_path_resize = 'uploads/images/45x45';
if( $request ){
$filmsObj = new Film();
if (!File::exists($dir_path))
{
File::makeDirectory($dir_path, 0775, true);
}
if (!File::exists($dir_path_resize))
{
File::makeDirectory($dir_path_resize, 0775, true);
}
if ( $request->file ) {
$file = $request->file;
$extension = $file->getClientOriginalExtension();
$file_name = 'films_'.\Carbon\Carbon::now().'.'.$extension;
$file->move($dir_path, $file_name);
$image = Image::make(public_path($dir_path.'/'.$file_name));
$image->resize(null, 45, function ($constraint) {
$constraint->aspectRatio();
});
$image->save(public_path($dir_path_resize.'/'.$file_name));
}
return $return_array;
}
}
let frm = = new FormData;
frm.append("_method", "put");
frm.append("key_name", value);
axios.post(url, frm).then(res => { }