【问题标题】:node.js stream file upload structured for folder为文件夹结构化的node.js流文件上传
【发布时间】:2014-01-17 17:44:51
【问题描述】:

我正在使用 node 和 express 为我的网站做一些 CMS。 我想使用一个表单来放置多个文件,并将这些文件存储到 public/image/:foldername 中。

所以我创建了一个表单,它有两个输入: 1.event -- 事件名称 2.file -- 明显是输入的文件

现在,当管理员登录并看到此表单时,他正在输入他的事件名称,例如“ “生日” 以及与之关联的图像文件。

我最终希望 strcure 是这样的: 民众/ /图片 /生日 图像1 图2 图3 图片4

这里是 HTML:

<div class="panel panel-primary spacer3">
    <div class="row">
        {{#if error}}
        <div data-alert class="alert-box">
           {{error}}
            <a href="#" class="close">&times;</a>
        </div>
        {{/if}}
        <div class="small-4 medium-4 large-4 columns text-center">
            <h1>פאנל ניהול</h1>
        </div>
        <form method="POST" action="/login">
            <div class="row">
                <div class="large-12 columns rtl">
                  <label>שם משתמש</label>
                  <input type="text" name="username" placeholder="שם משתמש" />
                </div>
            </div>
            <div class="row">
                <div class="large-12 columns rtl">
                  <label>סיסמא</label>
                  <input type="password" name="password" placeholder="סיסמא" />
                </div>
            </div>
            <div class="row">
                <div class="large-12 columns">
                  <input class="button [radius round]" type="submit" value="התחבר" />
                </div>
            </div>
        </form>
    </div>
</div>

路线如下:

app.post('/upload',routes.photos)

exports.photos = function(req, res){
    console.log("body " + req.body);
    console.log("event " + req.body.event);
    console.log("files " + req.body.files);
    if (req.body && req.body.files && req.body.event){
        //event i th the name of the event
        //files is the files that needs to be uploaded
        var file = fs.createReadStream(req.body.files);
        var newfile = fs.createWriteStream('./public/img/images');
        file.pipe(newfile);
    }
    else{
        console.log("none")
    }
};

readstream 和 writestream 不起作用,我不知道如何制作这个结构。

【问题讨论】:

    标签: node.js file-upload express stream


    【解决方案1】:

    应该是

    <form method="POST" action="/login" enctype="multipart/form-data">
    

    还有

    var file = fs.createReadStream(req.body.files);
    

    应该是

    var file = fs.createReadStream(req.files.formName.path);
    

    formName 在哪里

    <input type='file' name='formName' />
    

    【讨论】:

      【解决方案2】:

      这是 iv 所做的: 从 npm 安装 mkdirp mkdirp = 要求('mkdirp'); 这将创建一个新文件夹。

      readFile 会读取这些图像。

      exports.photos = function(req, res){
          console.log(req.body);
          console.log(req.files)
          console.log(req.files.img_file);
      
          console.log("Uploading File");
      
          fs.readFile(req.files.img_file.path, function (err, data) {
      
            var newPath = __dirname + "./public/img/albums";
            fs.writeFile(newPath, data, function (err) {
              res.redirect("back");
            });
          });
      
      };
      
      //Post request to create new album
      exports.createAlbum = function(req, res){
          if (req.body && req.body.album)
              var album_name = req.body.album;
          else
              var album_name = 'unknown_album-' + (parseInt(Math.random() * 5) + 1);
      
          console.log(__dirname);
          mkdirp('./public/img/albums/' + album_name, function (err) {
              if (err) 
                  console.error(err);
              else 
              {
                  console.log('Folder created.');
                  res.render('admin/panel', {
                      title: 'אדמין',
                      message: 'תיקייה נפתחה בהצלחה',
                      album: album_name
                  });
              }
          });
      };
      

      【讨论】:

        猜你喜欢
        • 2012-05-03
        • 2023-04-01
        • 2011-07-07
        • 1970-01-01
        • 2022-06-29
        • 1970-01-01
        • 1970-01-01
        • 2015-04-19
        • 2014-01-20
        相关资源
        最近更新 更多