#javascript #reactjs #laravel #axios
#javascript #reactjs #laravel #axios
Вопрос:
Я перепробовал все предыдущие способы, но ни один из них мне не помог. Я пытаюсь загрузить файл через axios:
const [file, setFile] = useState(null)
setFile(event.target.files[0]);
const uploadFile = () => {
const formData = new FormData();
formData.append('myFile', file);
api.createFile(formData).then(res => {
console.log(res.data);
})
}
const axios = window.axios
const BASE_API_URL = 'http://localhost:8000',
const config = { headers: { 'content-type': 'multipart/form-data'}}
export default {
createFile: formData =>
axios.post(`${BASE_API_URL}/tickets/createFile`, formData, config)
}
Я уже проверил переменную ‘file’ через журнал, и она существует. Но когда я получаю это в laravel:
Route::post('/tickets/createFile', function (Request $request){
return response()->json([
'file' => $request->file('myFile')
]);
});
НАКОНЕЦ: я получаю пустой ответ, что означает, что я не могу его сохранить, потому что получаю нулевое значение
Комментарии:
1. вам нужно написать код для загрузки файла laravel.com/docs/8.x/filesystem#storing-files
2. Вы не сохраняете файл нигде в своей системе? вы просто хотите вернуть имя файла или что? Если вы хотите загрузить его, вам нужно его сохранить.
3. @Ashu Я уже пытался сохранить его, но я получаю сообщение об ошибке, что файл равен нулю, так как я просто проверяю его некоторое время, отправляя обратно через ответ
4. Можете ли вы убедиться, что в инструментах разработки есть файл с именем myFile и он двоичный? в данных запроса
5. @Ashu У меня есть данные формы и мой файл: (двоичный)
Ответ №1:
Вы ожидаете файл в ответе JSON, но когда вы обращаетесь к файлу с помощью $request->file('myFile')
, он возвращает экземпляр IlluminateHttpUploadedFile
, и когда вы возвращаете json, он вернет пустой объект, поскольку IlluminateHttpUploadedFile
не преобразуется в json
подобные модели, поскольку для него нет toJson()
метода.
если вы сбросите и умрете $request->file(‘myFile’)
Route::post('/tickets/createFile', function (Request $request){
dd($request->file('myFile'));
});
Вы должны иметь возможность видеть ваш загруженный файловый объект. Итак, вы можете продолжить сохранение файла с помощью Storage::put()
метода