preview upload php

This commit is contained in:
2023-01-04 00:16:09 +01:00
parent 371b55bd64
commit 57270dd7a6
4 changed files with 81 additions and 36 deletions

View File

@ -33,7 +33,7 @@ const App: React.FC = () =>
<Route path="/login" element={<Login/>} /> <Route path="/login" element={<Login/>} />
<Route path="/reg" element={<Register/>} /> <Route path="/reg" element={<Register/>} />
<Route path="/impressum" element={<Impressum/>} /> <Route path="/impressum" element={<Impressum/>} />
<Route path="/upload" element={<FileUpload/>} /> {user && <Route path="/upload" element={<FileUpload/>} />}
</Routes> </Routes>
<Footer/> <Footer/>
</BrowserRouter> </BrowserRouter>

View File

@ -1,13 +1,13 @@
import { useState, useEffect } from "react"; import { useState } from "react";
import UploadService from "../services/FileUploadService"; import UploadService from "../services/FileUploadService";
import IFile from "../types/File"; import IFile from "../types/File";
import PreviewUpload from "./PreviewUpload";
const FileUpload: React.FC = () => const FileUpload: React.FC = () =>
{ {
const [currentFile, setCurrentFile] = useState<File>(); const [currentFile, setCurrentFile] = useState<File>();
const [progress, setProgress] = useState(0); const [progress, setProgress] = useState(0);
const [message, setMessage] = useState(""); const [message, setMessage] = useState("");
const [fileInfos, setFileInfos] = useState([]);
const selectFile = (event: React.ChangeEvent<HTMLInputElement>) => const selectFile = (event: React.ChangeEvent<HTMLInputElement>) =>
@ -30,11 +30,7 @@ const FileUpload: React.FC = () =>
.then((response) => .then((response) =>
{ {
setMessage(response.data.message); setMessage(response.data.message);
return UploadService.getFiles(); return;
})
.then((files) =>
{
setFileInfos(files.data);
}) })
.catch((err) => .catch((err) =>
{ {
@ -53,25 +49,17 @@ const FileUpload: React.FC = () =>
}); });
}; };
useEffect(() =>
{
UploadService.getFiles().then((response) =>
{
setFileInfos(response.data);
});
}, []);
return ( return (
<div> <div>
<div className="row"> <div className="row">
<div className="col-8"> <div className="col-8">
<label className="btn btn-default p-0"> <PreviewUpload chgFile={selectFile} />
{/* <label className="btn btn-default p-0">
<input type="file" onChange={selectFile} /> <input type="file" onChange={selectFile} />
</label> </label> */}
</div> </div>
<div className="col-4"> <div className="col-4">
<button <button
className="btn btn-success btn-sm" className="btn btn-success btn-sm"
@ -104,17 +92,6 @@ const FileUpload: React.FC = () =>
</div> </div>
)} )}
<div className="card mt-3">
<div className="card-header">List of Files</div>
<ul className="list-group list-group-flush">
{/* {fileInfos &&
fileInfos.map((file: IFile, index: number) => (
<li className="list-group-item" key={index}>
<a href={file.url}>{file.name}</a>
</li>
))} */}
</ul>
</div>
</div> </div>
); );

View File

@ -0,0 +1,72 @@
import React, { useState } from 'react';
function PreviewUpload({chgFile}:{chgFile: any}) {
const [file, setFile] = useState<string | undefined >(undefined);
const [dimensionWidth, setDimensionWidth] = useState(0);
const [dimensionHeight, setDimensionHeight] = useState(0);
const handleChange = async (
event: React.ChangeEvent<HTMLInputElement>
): Promise<any> => {
// const { target } = event;
// const img = new Image();
const ImageName = event.target.value.split('\\')[2];
const Image = event.target.value;
console.log('Imageon Kevel: ', Image); // Image on Kevel
console.log('ImageName on Kevel: ', ImageName); // ImageName on Kevel
console.log('ImageLink on Kevel: ', event.target.value); // ImageLink on Kevel
console.log('event current Target files: ', event.target.files![0]);
const fileLoaded = URL.createObjectURL(event.target.files![0]);
const files = event.target.files;
console.log('files: ', files);
const dimensions = await someFunction(fileLoaded);
setDimensionWidth(dimensions.width);
setDimensionHeight(dimensions.height);
console.log('dimensions: ', dimensions);
console.log('dimensions width: ', dimensions.width);
console.log('dimensions height: ', dimensions.height);
setFile(fileLoaded);
chgFile(event);
};
const getHeightAndWidthFromDataUrl = (dataURL: string) =>
new Promise<{height: number, width: number}>((resolve) => {
const img = new Image();
img.onload = () => {
resolve({
height: img.height,
width: img.width,
});
};
img.src = dataURL;
});
// Get dimensions
const someFunction = async (file: any) => {
console.log('file: ', file);
const dimensions = await getHeightAndWidthFromDataUrl(file);
return dimensions;
};
return (
<div>
<input
type="file"
onChange={handleChange}
accept="image/jpg,.gif,.png,.svg,.webp audio/wav,.mp3"
/>
<img
src={file}
style={{
display: 'flex',
border: '2px solid tomato',
maxWidth: '300px',
maxHeight: '300px',
}}
/>
{file && <p>Dimensions: {`${dimensionWidth} x ${dimensionHeight}`}</p>}
</div>
);
}
export default PreviewUpload;

View File

@ -20,13 +20,9 @@ const upload = (file: File, onUploadProgress: any): Promise<any> => {
return uploadRes; return uploadRes;
}; };
const getFiles = () : Promise<any> => {
return Axios.get("/files");
};
const FileUploadService = { const FileUploadService = {
upload, upload
getFiles,
}; };
export default FileUploadService; export default FileUploadService;