Skip to main content
Glama

kjlahsdjkashdjhkasdkajshd

by couchrishi
App.js2.86 kB
import React, { useState, useRef } from 'react'; import './App.css'; function App() { const [selectedFiles, setSelectedFiles] = useState([]); const [uploading, setUploading] = useState(false); const [jobId, setJobId] = useState(null); const [uploadStatusMessage, setUploadStatusMessage] = useState(''); const fileInputRef = useRef(null); // Reference to the file input element. const handleFileChange = (event) => { setSelectedFiles(event.target.files); }; const handleUpload = async () => { try { if (selectedFiles.length === 0) { alert('Please select at least one file to upload.'); return; } setUploading(true); const formData = new FormData(); for (let i = 0; i < selectedFiles.length; i++) { formData.append('images', selectedFiles[i]); } console.log('UPLOAD_HANDLER_URL:', process.env.UPLOAD_HANDLER_URL); const response = await fetch('YOUR_CLOUD_RUN_BACKEND_URL/upload', { method: 'POST', body: formData, }); const data = await response.json(); setJobId(data.jobId); setUploadStatusMessage(`Uploaded ${selectedFiles.length} images successfully.`); setSelectedFiles([]); setUploading(false); // Reset the file input element after successful upload if (fileInputRef.current) { fileInputRef.current.value = ''; } } catch (error) { console.error('Error uploading files:', error); setUploadStatusMessage('Something went wrong while uploading files.'); setUploading(false); } }; const handleUploadButtonClick = () => { if (selectedFiles.length === 0) { // If no files are selected, open the file explorer document.getElementById('file-input').click(); } else { // If files are already selected, proceed with the upload handleUpload(); } }; const buttonText = uploading ? 'Uploading...' : selectedFiles.length > 0 ? 'Upload' : 'Choose Files'; return ( <div className="App"> <h1>Fine tune Stable Diffusion with your own Images</h1> <div className="file-input-wrapper"> <input id="file-input" type="file" accept="image/*" multiple onChange={handleFileChange} style={{ display: 'none' }} ref={fileInputRef} /> <button className="upload-btn" onClick={handleUploadButtonClick} disabled={uploading}> {buttonText} </button> </div> {!uploading && selectedFiles.length > 0 && ( <div className="file-count"> <p>{selectedFiles.length} files selected</p> </div> )} {uploadStatusMessage && <div className="upload-status">{uploadStatusMessage}</div>} {jobId && <p>Job ID: {jobId}</p>} </div> ); } export default App;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/couchrishi/sd-for-designers'

If you have feedback or need assistance with the MCP directory API, please join our Discord server