如何将文件上传到节点js中的api服务器?

时间:2017-03-27 07:36:45

标签: ajax node.js html5 mongodb express

我正在构建一个需要上传测试报告的网络应用。我在前端工作,其他人正在后端工作(使用nodejs和mongodb)。他的api服务器是单独运行的,我的webapp是单独运行的。现在我需要将上传的文件发送到他的api。我在做这件事时遇到了问题。我通过ajax发送数据。这是我的ajax代码

    f = open("test.txt","r+")
    for i in range(0,100):  
        f.seek(0)
        f.truncate(0)
        f.write("End of file")
    f.close()

当我在我的路线中使用console.log(req.body)时,我将获取数据以及文件路径(不是文件)。如果我使用console.log(req.files)我会变空{}。

1 个答案:

答案 0 :(得分:2)

您可以使用两种方法进行文件上传。

  1. 将文件的Base64发送到后端。后端开发人员将此文件存储在服务器中,商店位置的URL将存储在数据库中。

  2. 对于节点有multer和connect-multiparty npm。你可以选择其中一个。

    对于后端代码是

    var express = require('express'),
    bodyParser = require('body-parser'),
    host = '127.0.0.1',
    port = '3002',
    multer = require('multer'),
    app = express();
    var upload = multer()
    app.use(bodyParser.urlencoded({
       extended: false
    
    }))
    
    
    app.post('/file-upload', upload, function(req, res) {
       console.log('file upload');
    })
    app.listen(port, function() {
       console.log('hi server run' + " " + port);
    })
    
  3. 和froent-end代码是

    <body>
    <form method="post" enctype="multipart/form-data" action="http://localhost:3002/file-upload">
        <input type="file" name="thumbnail">
        <input type="submit">
    </form>
    

    我认为第二个选项是文件上传的好选项。您可以查看multer

    用于在

    上传多个文件