【问题标题】:Uploading a file using Node without changing to a new page使用 Node 上传文件而不更改到新页面
【发布时间】:2021-06-02 16:33:51
【问题描述】:

我一直在关注一些关于如何使用节点上传文件的教程,并且我已经成功地实际上传了文件(我主要使用了https://www.geeksforgeeks.org/file-uploading-in-node-js/)。但是,每次上传文件时,它都会更改为新页面。上传照片后有没有办法留在同一页面上,还是我必须创建一个与上传前具有相同名称的 HTML 文件?工作代码如下:

const express = require("express") 
const path = require("path") 
const multer = require("multer") 
const app = express() 

app.use(express.static(__dirname + '/public'));


var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
        cb(null, "uploads") 
    }, 
    filename: function (req, file, cb) { 
      cb(null, file.fieldname + "-" + Date.now()+".jpg") 
    } 
  }) 
    
var upload = multer({  
    storage: storage,
    fileFilter: function (req, file, cb){ 
        var filetypes = /jpeg|jpg|png/; 
        var mimetype = filetypes.test(file.mimetype); 
  
        var extname = filetypes.test(path.extname( 
                    file.originalname).toLowerCase()); 
        
        if (mimetype && extname) { 
            return cb(null, true); 
        } 
      
        cb("Error: File upload only supports the "
                + "following filetypes - " + filetypes); 
      }  
  
}).single("myfile");       

app.get("/",function(req,res){ 
    res.render("Signup"); 
}) 

app.post("/uploadCode",function (req, res, next) { 
         
    upload(req,res,function(err) { 
  
        if(err) { 
            res.send(err) 
        } 
        else { 
            res.send("Success, Image uploaded!") 
        } 
    }) 
}) 

app.listen(8000,function(error) { 
    if(error) throw error 
        console.log("Server running on port 8000") 
}) 

【问题讨论】:

    标签: javascript node.js file-upload


    【解决方案1】:

    如果您从浏览器通过提交按钮自动为您提交表单的表单进行上传,那么它将是浏览器表单 POST,并且浏览器将自动显示 POST 请求返回的任何响应作为响应。

    如果您使用 Javascript Ajax 调用来上传表单以执行表单 POST,那么表单响应只会返回到您的 Javascript,并且浏览器中的当前网页不会发生任何事情。您的 Javascript 可以接收该响应,然后决定如何处理它(如果有的话)。

    您在此处显示了您的服务器端代码,但实际上是客户端控制在从服务器接收回上传响应后发生的情况。因此,必须在客户端进行更改才能通过 Javascript 提交表单。

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 2016-07-25
      • 2012-04-20
      • 2012-09-10
      • 2010-12-26
      • 2018-08-20
      相关资源
      最近更新 更多