Подскажите пожалуйста как правильно загрузить фото с React, так как приходит только имя файла, а не сам файл.
component.js
export default class Home extends Component
{
constructor(props) {
super(props);
this.handleSubmit = this.handleSubmit.bind(this);
this.fileInput = React.createRef();
}
handleSubmit(event) {
event.preventDefault();
alert(
`Selected file - ${
this.fileInput.current.files[0].name
}`
);
this.props.photoAdd(this.fileInput.current.files[0].name);
}
render() {
return (
<form onSubmit={this.handleSubmit} encType='multipart/form-data'>
<label>
Upload ----file:
<input type='file' ref={this.fileInput} />
</label>
<br/>
<button type='submit'>Submit</button>
</form>
);
}
}
action.js
export function photoAdd (photo)
{
const token = localStorage.getItem('accessToken')
const requestBody = 'photo='+ photo ;
const formData = {file: photo}
const config = {
headers: {
'Authorization': 'Bearer ' + token,
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
}
}
return function (dispatch) {
dispatch({
type: ADDPHOTO_REQUEST
})
axios.post('/api/addpic', formData, config)
.then(response => {
dispatch({
type: ADDPHOTO_SUCCESS,
payload: response,
})
})
.catch(error => {
dispatch({
type: ADDPHOTO_FAIL,
payload: error
})
})
}
}
addpic.php
public function addpic(Request $request)
{
$user = Auth::user();
$name = mb_strtoupper($user->name[0]);
$input=$request->all();
if($request->hasFile('image')) {
$filename= md5($_FILES['image']['name']).'.img';
$file = $request->file('image');
$file->move(public_path() . '/gallery',$filename);
$success='yeah!!!';
} else {
$success = 'oh no';
}
return response()->json(['success' => $success], $this->successStatus);
}
У вас не FormData а обычный объект.
Попробуйте вместо
const formData = {file: photo}
Этот вариант:
const formData = new FormData()
Вы можете добавлять пару ключ/значение с помощью FormData.append:
formData.append('file', myFileInput.files[0])
Если через photo как у вас:
formData.append('file', photo)
Но photo должен быть объектом File.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок