Home > Net >  If I store my video file in mongodb how I can generate url for my application
If I store my video file in mongodb how I can generate url for my application

Time:08-12

I am not able to solve this problem there are many way please help me urgent basis

I need url like https//local host..

My mongo db my video is store how i can get

CodePudding user response:

you have to save that file in server directory and get the directory path and save in mongodb with your host name and port

CodePudding user response:

Well, We don't actually save videos in MongoDB database. Instead we save them in a folder and save the path to the video in the database.
I'm using NodeJS with MongoDB to achieve the functionality that you want.

Step 1

First create a node project and install these dependencies/libraries in the project.

npm install express dotenv mongoose express-fileupload

express-fileupload library will allow you to accept files in form-data. It creates a property files:[] in the req object.

Step 2

Once, all the essential libraries are installed you can move forward with the second step. We'll write code in the index.js / app.js file.

import express from "express";
import dotenv from 'dotenv';
import upload from 'express-fileupload';
import mongoose from "mongoose";

dotenv.config();
var PORT = process.env.PORT,
    DB_URL = process.env.DB_URL;

console.clear();
mongoose.connect(DB_URL, (err) => {
   if(err) console.error(err);
   console.log('\x1b[33mDatabase Connected!\x1b[0m');
});
const app = express();

app.use(express.json());
app.use(upload());
app.use(cors());
app.use(express.static('public'));

app.listen(PORT, () => {
    console.log(`\x1b[92mServer is now up and running on:\x1b[0m`);
    console.log(`\x1b[46mhttp://localhost:${PORT}\x1b[0m`);
});

.env

PORT=3000
DB_URL="mongodb srv://<user>:<password>@:<server.uri>/<db.name>?retryWrites=true&w=majority"

Step 3

Now first of all create a folder public in the top level directory of your project and create a sub folder profiles in it.
All of your images will be saved here. Once, You've performed these instructions you can finally create a route in your main file.

app.post('/saveVideo', async (req, res) => {
    try {
        let videoFile = req.files?.video;

        if (!videoFile) return res.status(400).json({
            status: "error",
            message: "Please add profile picture to continue.",
            data: null,
        });
        // add file extensions check to identify if the file is a video
        // right now, It accepts all kinds of files
        let fileName = `public/profiles/${Date.now()}-${videoFile.name.replace(/ /g, '-').toLowerCase()}`;
        await profilePicture.mv(fileName);

        videoFile = fileName.replace("public", "");
        // you can save this videoFile path in the database
        return res.json({
            status: "success",
            message: "Profile Picture Updated!",
            data: profilePicture
        });
    } catch (err) {
        return res.status(500).json({
            status: "error",
            message: "An unexpected error occured while proceeding your request.",
            data: null,
            trace: err.message
        })
    })
  • Related