Php 在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'

我在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'
    },
}).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

我以这种方式使用VueLaravel中上载文件

路由(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 => { }