import React, { useState } from "react"; import axios from "axios"; const DownloadForm = () => { const [url, setUrl] = useState(""); const [quality, setQuality] = useState("720p"); const [message, setMessage] = useState(""); const handleDownload = async (e) => { e.preventDefault(); setMessage("Downloading..."); try { const response = await axios.post( `${process.env.REACT_APP_BACKEND_URL}/downlink/download`, { url, quality }, { responseType: "blob", // Ensure the response is treated as a file }, ); // Extract the filename from the Content-Disposition header if present const disposition = response.headers["content-disposition"]; const filename = disposition ? disposition.split("filename=")[1].replace(/"/g, "") : "video.mp4"; // Default filename const link = document.createElement("a"); link.href = window.URL.createObjectURL(new Blob([response.data])); link.download = filename; link.click(); setMessage("Download complete"); } catch (error) { setMessage("Download failed"); console.error(error); } }; return (
setUrl(e.target.value)} className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm" placeholder="Enter video URL" />
{message &&

{message}

}
); }; export default DownloadForm;