(各バージョン)
laravel:6.18.40
PHP:7.2.31
nginx:1.19.0"
標題にある通り画像のアップロードを行いたいです。
調べたら色々とやり方が載っていたので参考にしながら下記のように行いました。
保存先は/storage/app/publicになります。
フロント側↓
vue
1<form class="form" enctype="multipart/form-data" @submit.prevent="register"> 2 <input type="file" name="product_img" class="form_file" accept=".png, .jpg, .jpeg" @change="onImgset"> 3</form> 4<script> 5data(){ 6 return{ 7 imgData: '' 8 } 9}, 10methods: { 11 //画像アップロード 12 async register(){ 13 const formData = new FormData(); 14 formData.append('file',this.imgData); 15 const response = await axios.post('/api/imgregister', formData); 16 }, 17 //画像選択時に動作 18 onImgset(e){ 19 this.imgData = e.target.files[0]; 20 } 21} 22</script>
ルーティング↓
php
1//画像登録 2Route::post('/imgregister', 'Auth\AdminProductController@imgRegister')->name('imgregister');
コントローラー↓
php
1public function imgRegister(Request $request){ 2 $file_name = $request->file->getClientOriginalName(); 3 $request->file->storeAs('/public',$file_name); 4 return $this->jsonResponse("OK"); 5}
上記の様にアップロードをした時に/storage/app/publicにアップロードした画像名でファイルは
生成されるのですが0バイトでデータがないものになってしまいました。
参考にした記事ではこれで上手くいっているのですが自分は上手くいきません。
コントローラーの処理で$request->fileの箇所を参考にした記事だと$request->file('inputのname')と
指定していましたが自分が行ったらnullで取得できなかったので$request->fileとしてあります。
何か原因が分かる方がいたらご教示お願いします。
回答1件
あなたの回答
tips
プレビュー