Hello to all, welcome back to my blog. Today in this blog post, I am going to tell you, Reactjs Upload & Save Multiple Images PDF Video Files with Preview and Delete functionality.
Post Code Benefits, this post code will provide below things:
- Multiple Image, pdf, video files uploading.
- Uploaded image will preview in modal popup.
- Uploaded image can be delete.
- All the files will be save inside folder with php.
For reactjs new comers, please check the below link:
Friends now I proceed onwards and here is the working code snippet and please use this carefully to avoid the mistakes:
1. Firstly friends we need fresh reactjs setup and for that we need to run below commands into our terminal and also w should have latest node version installed on our system:
npx create-react-app reactimageupload cd reactimageupload npm start // run the project
2. Now we need to run below commands to get bootstrap(for good layout), antdmodules into our react js app:
npm install antd npm install bootstrap --save npm start
3. Now friends, after are done with commands, now please open reactimageupload/src/App.js file and add below code inside it:
import React from 'react'; import './App.css'; //Bootstrap and jQuery libraries import 'bootstrap/dist/css/bootstrap.min.css'; //Image upload modules import { Upload, Modal, Button } from 'antd'; import { PlusOutlined } from '@ant-design/icons'; import axios from 'axios'; import "antd/dist/antd.css"; class App extends React.Component { render(){ //Uploaded url function getBase64(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result); //reader.onerror = error => reject(error); }); } class PicturesWall extends React.Component { state = { previewVisible: false, previewImage: '', previewTitle: '', fileList: [ ], }; handleCancel = () => this.setState({ previewVisible: false }); //Image Preview handlePreview = async file => { if (!file.url && !file.preview) { file.preview = await getBase64(file.originFileObj); } this.setState({ previewImage: file.url || file.preview, previewVisible: true, previewTitle: file.name || file.url.substring(file.url.lastIndexOf('/') + 1), }); }; handleChange = ({ fileList }) => this.setState({ fileList }); handleSubmit = event => { event.preventDefault(); let formData = new FormData(); // add one or more of your files in FormData // again, the original file is located at the `originFileObj` key //Files Storage Looping for(var a = 0; a<this.state.fileList.length; a++) { formData.append("file[]", this.state.fileList[a].originFileObj); } //File saving API call axios .post("http://localhost/save.php", formData) .then(res => { alert("Files uploaded."); }) .catch(err => { console.log("err", err); }); } render() { const { previewVisible, previewImage, fileList, previewTitle } = this.state; const uploadButton = ( <div> <PlusOutlined /> <div style={{ marginTop: 8 }}>Upload</div> </div> ); return ( <> <Upload listType="picture-card" fileList={fileList} onPreview={this.handlePreview} onChange={this.handleChange} beforeUpload={() => false} > {fileList.length >= 8 ? null : uploadButton} </Upload> <Modal visible={previewVisible} title={previewTitle} footer={null} onCancel={this.handleCancel} > <img alt="example" style={{ width: '100%' }} src={previewImage} /> </Modal> <Button type="primary" onClick={this.handleSubmit} // this button click will trigger the manual upload > Submit </Button> </> ); } } return ( <div className="MainDiv"> <div className="jumbotron text-center pt-5"> <h3 className="mt-5 mb-5">Therichpost.com</h3> </div> <div className="container"> <PicturesWall /> </div> </div> ); } } export default App;
4. Now friends, we need to create save.php file inside our xamp/htdocs folder and add below code inside it:
<?php //Multiple Files Uploading for($a=0; $a<count($_FILES["file"]["name"]); $a++) { $target_dir = "uploads/"; //image upload folder name $target_file = $target_dir . basename($_FILES["file"]["name"][$a]); //moving multiple images inside folder if (move_uploaded_file($_FILES["file"]["tmp_name"][$a], $target_file)) { $data = array("data" => "Files are valid and successfully uploaded."); } } print json_encode($data); die(); ?>
5. Also guy’s we need to create `uploads` folder inside xamp/htdocs folder to save the files.
Now we are done friends. If you have any kind of query or suggestion or any requirement then feel free to comment below.
Note: Friends, I just tell the basic setup and things, you can change the code according to your requirements. For better understanding and live working must watch video above.
I will appreciate that if you will tell your views for this post. Nothing matters if your views will good or bad.
Jassa
Thanks
Recent Comments