我正在前端使用Plupload实现文件上传,并在后端使用multer中间件表示nodeps以进行多部分/表单上传。目前没有可用的示例,所以这是我到目前为止所得到的:
HTML前端:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test</title>
</head>
<ul id="filelist"></ul>
<br />
<div id="container">
<a id="browse" href="javascript:;">[Browse...]</a>
<a id="start-upload" href="javascript:;">[Start Upload]</a>
<br />
<pre id="console"></pre>
</div>
<script src="/plupload/js/plupload.full.min.js"></script>
<script type="text/javascript">
var uploader = new plupload.Uploader({
browse_button: 'browse', // this can be an id of a DOM element or the DOM element itself
url: '/upload'
});
uploader.init();
uploader.bind('FilesAdded', function(up, files) {
var html = '';
plupload.each(files, function(file) {
html += '<li id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b></li>';
});
document.getElementById('filelist').innerHTML += html;
});
uploader.bind('UploadProgress', function(up, file) {
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
});
uploader.bind('Error', function(up, err) {
document.getElementById('console').innerHTML += "\nError #" + err.code + ": " + err.message;
});
document.getElementById('start-upload').onclick = function() {
uploader.start();
};
</script>
</html>
它基本上只是plupload快速入门指南:http://www.plupload.com/docs/v2/Getting-Started
使用node express的后端。我将我的代码修改为最低工作版本,以便在SO上使用:
const path = require('path');
const express = require('express');
var multer = require('multer');
var upload = multer({ dest: 'uploads/' });
// Create express
const app = express();
app.use(express.static('public'));
app.post('/upload', upload.array('file'), function(req, res){
console.log(req.files);
})
app.listen(3000, function () {
console.log('App running...');
});
基本上,只是一个带有multer包和服务静态文件的常规快递应用程序。
问题:
如何使用前端的Plupload和后端的NodeJS(使用express,multer)上传文件?它也应该支持分块。
答案 0 :(得分:0)
您可以使用limits: { fileSize: the_file_size_which_you_want_to_allow }
函数在文件上传之前对其进行验证,此功能可让您验证文件名,扩展名以及应上传哪些文件以及哪些文件应被跳过。
例如,假设您希望用户仅上传&#34; PDF&#34;文件,您可以编写这样的过滤器,
fileName
如果您想限制用户上传特定MB内的文件,您可以使用filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
属性设置为,
{{1}}
最后,如果你想在你的目标目录(文件上传的地方)中有一个共同的文件命名模式,你可以使用这样的{{1}}函数,(在下面的例子中我们附加一个连字符和文件名的时间戳)。
{{1}}
<强>更新强>
您可以使用MultiIndex.from_product
节点模块来处理您尝试解决的快速连接通信。
希望这有帮助!