Перенаправить веб-страницу / upload (полученную из запроса формы-сообщения в node.js, npm package multer) на другую страницу html - PullRequest
0 голосов
/ 21 апреля 2020

Я довольно новый в node.js. Я не могу перенаправить страницу / загрузить на другую. html веб-страницу. Я имею в виду, все работает нормально, я загружаю файл img, и код переходит на страницу http://localhost: 3000 / upload , но я не знаю, как автоматически перенаправить на другую. html file

Вот мой HTML:

<div class="container">
        <form action="/upload" method="POST" enctype="multipart/form-data">
            <input name="myImage" type="file">
            <input class="file-path validate" type="text" placeholder="Upload your file">
    </div>
    <button type="submit" class="btn">Submit</button>
    </form>
    </div>

и вот мой индекс файлов сервера. js

const express = require("express");
const multer = require("multer");
const path = require("path");
const storage = multer.diskStorage({
    destination: './public/uploads',
    filename: function(req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
    }
});
//init upload
const upload = multer({
    storage: storage,
    limits: { filesize: 1000000 },
    fileFilter: function(req, file, cb) {
        checkFileType(file, cb);
    }

}).single('myImage'); //single image

function checkFileType(file, cb) {
    const filetypes = /jpeg|jpg|png|gif/;
    const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
    const mimetype = filetypes.test(file.mimetype);
    if (mimetype && extname) {
        return cb(null, true);
    } else {
        cb("Error:images only");
    }
};
const app = express();
app.use(express.static('./public'));
app.post('/upload', (req, res) => {
    upload(req, res, (err) => {
        if (err) {
            res.json(err);            
        } else {
            if (req.file == undefined) {
                res.json("Error: No file selected")                  
            } else {
                res.json(`/${req.file.filename}`);
            }
        }
    });
});

app.listen(3000, function(req, res) {
    console.log("you are listening to port 3000");
});

Я приземляюсь на http://localhost: 3000 / загрузить и вот я остаюсь. Как можно пропустить это и перенаправить эту страницу автоматически на другую страницу с кодом html? Спасибо за любую помощь

1 Ответ

0 голосов
/ 21 апреля 2020

Вам просто нужно использовать функцию res.redirect('/path/here/); под вашим маршрутом.

Полная настройка:

//Dependencies
const multer = require('multer');

//Multer DiskStorage Config
const diskStorage = multer.diskStorage({
    destination: 'assets/profile_upload',
    filename: (req, file, call_back) => {
        //Prepend date to the filename or anything that makes
        //the file unique so it won't be overwritten
        call_back(null, Date.now() + '_' + file.originalname);
    }

});

//Create Multer Instance
const upload = multer({ storage: diskStorage }); 


//Picture upload
//or app.post()
router.post('/upload-pic', upload.single('file'), (req, res) => {

//The redirection happens here.

console.log(req.file);
res.redirect('/your/path');

});
//Your code:
app.post('/upload', (req, res) => { ...


try doing app.post('/upload' ,upload.single('file'), (req,res) =>{ ...
...