"Upload Image IN React Js with FormData"
Bootstrap 4.1.1 Snippet by Arjunverma

1
2
3
4
5
6
7
8
9
10
11
12
13
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<div>
<h2>Upload Image</h2>
<p>Using FormData</p>
</div>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import React, { useState } from 'react'
import { useSelector } from 'react-redux'
import axios from 'axios'
const Private = () => {
const user = useSelector((state) => state.userReducer.user);
const [formData, setFormData] = useState({
name: '',
email: '',
number: '',
image: null // Start with null for file data
})
const [pre, setPre] = useState('')
const handleChange = (e) => {
const { name, value } = e.target;
setFormData({ ...formData, [name]: value })
}
const handleFile = (e) => {
let selectedFile = e.target.files[0]; // Correct way to access file
console.log(selectedFile, "<<<<<");
setFormData({ ...formData, image: selectedFile });
if (selectedFile) {
let previewUrl = URL.createObjectURL(selectedFile); // Corrected method to create preview
setPre(previewUrl);
}
}
const handleSubmit = (e) => {
e.preventDefault();
const data = new FormData();
// Append all the fields to FormData
data.append('name', formData.name);
data.append('email', formData.email);
data.append('number', formData.number);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import React from 'react';
import { fireToast } from '../helper';
import axiosInstance from '../auth/axiosInstance';
import { Formik } from 'formik';
import axios from 'axios';
const Orders = () => {
return (
<div>
<h2>Orders</h2>
<p>Manage your orders here.</p>
<Formik
initialValues={{ profile: [] }}
validate={values => {
const errors = {};
if (values.profile.length === 0) {
errors.profile = 'Required';
}
return errors;
}}
onSubmit={(values, { setSubmitting }) => {
setSubmitting(true);
const formData = new FormData();
values.profile.forEach((file, index) => {
formData.append('profile', file); // Adding '[]' for an array of files
});
axiosInstance.post(process.env.REACT_APP_BASE_URL + `api/users/uploadProfile`, formData)
.then((res) => {
if (res.status === 200) {
fireToast('success', res?.data?.message);
}
})
.catch((error) => {
console.log(error)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Related: See More


Questions / Comments: