Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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
将图像上载到uploads文件夹uJavaScript_Javascript_Node.js_Forms_File_File Upload - Fatal编程技术网

将图像上载到uploads文件夹uJavaScript

将图像上载到uploads文件夹uJavaScript,javascript,node.js,forms,file,file-upload,Javascript,Node.js,Forms,File,File Upload,用户可以发送文本帖子(输入类型=“text”)或图像帖子(输入类型=“file”)。但他们不会两个都派 这是我的表格(翡翠): form#addPost(action=“/uploads”,method=“post”,placeholder=“在此处添加您的想法…”) 输入#postinput(type=“text”,name=“contents”placeholder=“在此处添加您的想法…”) div.privacy(class=“onoffswitch”,id='privacytog')

用户可以发送文本帖子(输入类型=“text”)或图像帖子(输入类型=“file”)。但他们不会两个都派

这是我的表格(翡翠):

form#addPost(action=“/uploads”,method=“post”,placeholder=“在此处添加您的想法…”)
输入#postinput(type=“text”,name=“contents”placeholder=“在此处添加您的想法…”)
div.privacy(class=“onoffswitch”,id='privacytog')
输入(type=“checkbox”name=“onoffswitch”class=“onoffswitch checkbox”id=“myonoffswitch”选中)
标签(class=“onoffswitch标签”for=“myonoffswitch”)
span(class=“ONOFF开关内部”)
span(class=“onoffswitch开关”)
输入#submit1(type=“submit”,value=“Post”)
下面是我的app.js(服务器端代码)

var util=require(“util”);
var fs=要求(“fs”);
var bodyParser=require('body-parser');
var multer=要求(“multer”);
应用程序使用(multer)({
目的地:“/公开/上传/”
}));
app.post(“/uploads)”,函数(请求、回复){
var数据=请求主体;
var id=请求用户。\u id;
var username=req.user.username;
变量日期=日期();
var-onOff=false;
if(要求主体开启关闭开关){
onOff=true;
}
//图像上载到上载文件夹
如果(请求文件){
log(util.inspect(req.files));
如果(req.files.fileInput.size==0){
返回next(新错误(“嘿,首先选择一个文件吗?”);
}
存在(req.files.fileInput.path,函数(存在){
如果(存在){
res.end(“收到你的文件!”);
}否则{
res.end(“好吧,对于那些不相信它的人来说,没有魔法可言!”);
}
});
}
findById(id,函数(err,User){
if(err)返回handleErr(err);
var uid=shortid.generate();
newPost={
//如果发送图像,请使用data.fileInput而不是contents
目录:[data.contents | |'/img/'+data.fileInput],
_id:uid,
隐私:onOff,
用户名:req.user.username,
日期:日期:,
评级:数字(0),
uwv:[]
};
user.posts.push(newPost);
user.save(函数(err,user){
if(err)返回handleErr(err);
如果(newPost.privacy==='false'){
对于(var i=0;i

正在上载图像并将其保存到上载文件夹。但是,当仅发布文本帖子时(仅填写input type=“text”)它不断抛出错误:无法读取未定义的属性“size”

如果没有选择文件,浏览器通常不会发送文件字段,因此后端无法知道有这样的字段


相反,只需检查文件字段是否存在:
if(!req.files.fileInput)
。您可能还需要检查文件是否为空:
if(!req.files.fileInput | |!req.files.fileInput.size)

谢谢。工作正常
form#addPost(action="/uploads", method="post", placeholder='Add your ideas here...')
            input#postinput(type="text", name="contents" placeholder="Add your ideas here...")
            div.privacy(class="onoffswitch", id='privacytog')
                input(type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" checked)
                label(class="onoffswitch-label" for="myonoffswitch")
                    span(class="onoffswitch-inner")
                    span(class="onoffswitch-switch")
            <div style="height:0px;overflow:hidden">
            <input type="file" id="fileInput"  name="fileInput" accept="image/*">
            </div>
            input#submit1(type="submit", value="Post")
var util = require("util");
var fs = require("fs");
var bodyParser = require('body-parser');
var multer = require("multer");

app.use(multer({
    dest: "./public/uploads/"
}));

app.post("/uploads", function(req, res) {
    var data = req.body;
    var id = req.user._id;
    var username = req.user.username;
    var date = Date();
    var onOff = false;
    if (req.body.onoffswitch) {
      onOff = true;
    }


    //Images upload to uploads folder
    if (req.files) {

      console.log(util.inspect(req.files));
      if (req.files.fileInput.size === 0) {
                  return next(new Error("Hey, first would you select a file?"));
      }
      fs.exists(req.files.fileInput.path, function(exists) {
        if(exists) {
          res.end("Got your file!");
        } else {
          res.end("Well, there is no magic for those who don’t believe in it!");
        }
    });
  }



    User.findById(id, function(err, user) {
      if (err) return handleErr(err);

      var uid = shortid.generate();

      newPost = {
        //If sending down an Image use data.fileInput not contents
        contents: [data.contents || '/img/'+data.fileInput],
        _id: uid,
        privacy: onOff,
        username: req.user.username,
        date: date,
        rating: Number(0),
        uwv: []
      };

      user.posts.push(newPost);

      user.save(function(err, user){
        if(err) return handleErr(err);
        if(newPost.privacy === 'false'){
          for (var i = 0; i < user.followers.length; i++) {
            User.findOne({username:user.followers[i]}, function(err, follower){
              follower.discover.push(newPost)
              follower.save();
            });
          }
        }
      });
    });

}