ファイルアップロードの取得パスはc: fakepath ... solutionを示しています



File Upload Get Path Shows C



最近ファイルアップロード機能を実行しましたが、AJAXでアップロードすると、ファイルパスがc: fakepath ..になっていることが突然わかりました。

最後に、次の解決策を見つける方法はありません。一時的に問題を解決しました。



ページに非表示のフォームを追加し、ajaxコミットが完了したら非表示のフォームを送信し、完了したファイルの送信を更新せずに、指定したiframe実装ページを更新します

html



{{ csrf_field() }} submit

それから私はマネージャーに刺されて、iframeは良くないと言いました。

最後に別の方法を見つけました、ファイルの内容をフォームに転送してファイルのアップロードを実現するjs偽のフォーム、上記の方法の改善されたバージョンと比較して、他の方法は気分が悪い、ファイルパスを復元することだと思いますメソッド、セキュリティはまだ検証されていません。

JS



// Click the button to upload the file $('#upload_file_btn').click(function() { // Check if the file is legal var fileFullName = $('#src_file_input').val() console.log(fileFullName) / / Build form data var formData = new FormData() formData.append('file', $('#src_file_input')[0].files[0]) // upload files $.ajax({ contentType: false, cache: false, processData: false, url: '/upload', type: 'POST', data: formData, success: function(data) { console.log(data) }, error: function() { console.log('Upload file failed!') } }) })

PHP

public function upload(Request $request) { / / Get the source file $src_file = $request->file('file') Log::info($src_file) / / Determine whether the file is valid if (($src_file != null) && ($src_file->isValid() == true)) { / / Output source file absolute path Log::info($src_file->getRealPath()) / / Output source file extension Log::info($src_file->getClientOriginalExtension()) / / Store the source file Storage::disk('public')->put('test.xlsx', file_get_contents($src_file->getRealPath())) // return Return array('code' => 0, 'msg' => 'File upload succeeded!') } else { // return Return array('code' => -1989, 'msg' => 'File upload failed!') } // default return return array('code' => 0, 'msg' => 'success!') }