Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Node.js解析表单数据_Javascript_Ajax_Node.js - Fatal编程技术网

Javascript 使用Node.js解析表单数据

Javascript 使用Node.js解析表单数据,javascript,ajax,node.js,Javascript,Ajax,Node.js,嘿,伙计们,我是新来的节点,并试图建立一个文件/图像上传脚本 我能够在我的VPS上设置节点,下面这个例子我也设置了这个应用程序,它工作得很好。 它使用的是强大和快速 不过,我还想解析一个表单,人们可以在其中添加自己的姓名,然后将文件上传到包含自己姓名的文件夹中。 我能够使用mkdirp创建文件夹,但是即使经过数小时的研究(强大的api、expressapi等),我也无法获得解析名称的表单。 我怀疑upload.js(将数据发送到节点应用程序)不起作用 目前,每次上传都会创建一个带有随机字符串的新

嘿,伙计们,我是新来的节点,并试图建立一个文件/图像上传脚本

我能够在我的VPS上设置节点,下面这个例子我也设置了这个应用程序,它工作得很好。 它使用的是强大和快速

不过,我还想解析一个表单,人们可以在其中添加自己的姓名,然后将文件上传到包含自己姓名的文件夹中。 我能够使用mkdirp创建文件夹,但是即使经过数小时的研究(强大的api、expressapi等),我也无法获得解析名称的表单。 我怀疑upload.js(将数据发送到节点应用程序)不起作用

目前,每次上传都会创建一个带有随机字符串的新文件夹,但我希望能够解析输入的formname

知道如何让它工作吗?如果有任何帮助/提示,我将不胜感激

app.js

var express = require('express');
var app = express();
var path = require('path');
var formidable = require('formidable');
var fs = require('fs');
var mkdirp = require('mkdirp');
var crypto = require("crypto");


app.use(express.static(path.join(__dirname, 'public')));

app.get('/', function(req, res){
   res.sendFile(path.join(__dirname, 'views/index.html'));
});


app.post('/upload', function(req, res){

var ordner = crypto.randomBytes(20).toString('hex');

mkdirp('/home/myfolder/fileupload/'+ordner, function (err) {
if (err) console.error(err)
else console.log(ordner)
});



  var form = new formidable.IncomingForm();


  form.multiples = true;

  form.uploadDir = path.join(__dirname, '/'+ ordner);

  form.on('file', function(field, file) {
    fs.rename(file.path, path.join(form.uploadDir, file.name + Date.now()+'.jpg'));
  });

 form.on('field', function(field, userName) {
 console.log(userName);
});





  form.on('error', function(err) {
    console.log('An error has occured: \n' + err);
  });


  form.on('end', function() {

    res.end('success');
  });

  form.parse(req);

});

 var server = app.listen(3000, function(){
 console.log('Server listening on port 3000');
});
谢谢


upload.js没有改变,我只是在视图中添加了另一个输入。

您可以通过POST发送参数,如下所示

app.post('/upload/:userName', function(req, res){
  var username = req.params.userName

  mkdirp('/home/myfolder/fileupload/'+username, function (err) {
    if (err) console.error(err)
    else console.log(ordner)
  });
代码的其余部分基本保持不变

编辑:您的ajax看起来像这样

var username = 'GetThisValueFromTheUser'
$.ajax({
 url: '/upload'+username,
 type: 'POST',
 data: formData,
 processData: false,
 contentType: false,
 success: function(data){
   console.log('upload successful!');
 }
});
注意:您可以在POST或GET请求中使用/:parameter发送参数,从那时起,您就可以轻松地使用这些参数