gpt4 book ai didi

javascript - 通过 AngularJS 和 NodeJS 上传文件,

转载 作者:太空宇宙 更新时间:2023-11-04 03:07:58 26 4
gpt4 key购买 nike

我现在使用的是Express4,想要上传文件到服务器的文件系统。 (例如,将文件保存在 public/files 文件夹中。)

有几个关于如何使用 formidablebusboy 来解析请求的问题,如下例所示:

var formidable = require('formidable'),
http = require('http'),
util = require('util');

http.createServer(function(req, res) {
if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
// parse a file upload
var form = new formidable.IncomingForm();

form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(util.inspect({fields: fields, files: files}));
});

return;
}

// show a file upload form
res.writeHead(200, {'content-type': 'text/html'});
res.end(
'<form action="/upload" enctype="multipart/form-data" method="post">'+
'<input type="text" name="title"><br>'+
'<input type="file" name="upload" multiple="multiple"><br>'+
'<input type="submit" value="Upload">'+
'</form>'
);
}).listen(8080);

这样的中间件可以解析 req 来获取元数据,例如文件路径、名称、大小等。但是,如果我想将不同的文件发布到不同的端点,我想使用 angularjs Controller 和服务结构来处理上传。

想知道如何获取文件路径、名称等到 Controller /服务并将它们发布到后端。然后我可以使用以下代码来上传文件。

api.post(url, function(req, res) {
var fs = require('fs');
//req.body.path: path of file, like, C:\\user\John\.....
//req.body.filename: name of file, like images.jpg
fs.readFile(req.body.path, function(err, data){
var uploadToPath = './public/files/' + req.body.filename;

fs.writeFile(uploadToPath, data, function(err){
if(err) {
res.send(err);
return;
}
});
});
});

我还指的是this solution ,但只能获取文件大小等信息,而不能获取非常重要的文件路径。

请指教,非常感谢。

最佳答案

对于 Node/快车端:

查看https://github.com/expressjs/multer

对于 Angular 一侧:

查看https://github.com/danialfarid/ng-file-upload

它使上传和保存单个或多个文件变得非常容易。他们有一个选项可以自动保存到目录。

https://github.com/expressjs/multer#multeropts

关于javascript - 通过 AngularJS 和 NodeJS 上传文件,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33787580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com