@shyann
To upload a file from a Vue.js frontend to a FastAPI backend, you can use the FormData
object in JavaScript to create a form data object and send it as a POST request to the FastAPI backend.
Here's a step-by-step guide on how to achieve this:
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 |
<template> <div> <input type="file" ref="fileInput" @change="handleFileUpload"> <button @click="uploadFile">Upload File</button> </div> </template> <script> export default { data() { return { file: null }; }, methods: { handleFileUpload(event) { this.file = event.target.files[0]; }, uploadFile() { const formData = new FormData(); formData.append('file', this.file); // Make a POST request to your FastAPI backend with the FormData object // You can use Axios or fetch API to make the request here } } } </script> |
Using Axios:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import axios from 'axios'; uploadFile() { const formData = new FormData(); formData.append('file', this.file); axios.post('http://your-fastapi-backend-url/upload', formData) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); } |
Using fetch API:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
uploadFile() { const formData = new FormData(); formData.append('file', this.file); fetch('http://your-fastapi-backend-url/upload', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { console.log(data); }) .catch(error => { console.error(error); }); } |
1 2 3 4 5 6 7 8 9 |
from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse app = FastAPI() @app.post("/upload") async def upload_file(file: UploadFile = File(...)): # Process the uploaded file here return JSONResponse(content={"message": "File uploaded successfully"}) |
With these steps, you can upload a file from your Vue.js frontend to your FastAPI backend. Make sure to handle file uploads properly in your backend to store or process the uploaded file as needed.