html的ajax提交表单图片和信息

servlet信息能接收到,formdata提交图片后台报错,谁有代码示例呀,servlet来接收图片过来

3个回答

html部分

 <form method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="name">标题:</label>
        <input type="text" class="form-control" name="title" placeholder="输入标题">
    </div>
    <div class="form-group">
        <label for="name">文章</label>
        <textarea class="form-control" name="article" rows="8"></textarea>
    </div>
    <div class="form-group">
        <label for="name">图片</label>
        <input type="file" name="postImg"  />
    </div>
    <hr />
    <input type="hidden" name="pv" value=0 >
    <input type="submit" value="发表" class="btn btn-default"/>
</form>

后台请求部分:

 router.post('/post',function(req,res,next){
  var imgPath = path.dirname(__dirname) + '/public/images/';
  var form = new formidable.IncomingForm(); //创建上传表单
  form.encoding = 'utf-8'; //设置编辑
  form.uploadDir = imgPath; //设置上传目录
  form.keepExtensions = true; //保留后缀
  form.maxFieldsSize = 2 * 1024 * 1024; //文件大小
  form.type = true;
  form.parse(req, function(err, fields, files) {
    if (err) {
      console.log(err);
      req.flash('error','图片上传失败');
      return;
    }
    var file = files.postImg;//获取上传文件信息

    if(file.type != 'image/png' && file.type != 'image/jpeg' && file.type != 'image/gif' && file.type != 'image/jpg'){
      console.log('上传文件格式错误,只支持png,jpeg,gif');
      req.flash('error','上传文件格式错误,只支持png,jpeg,gif');
      return res.redirect('/upload');
    }
    var title = fields.title;
    var author = req.session.user.username;
    var article = fields.article;
    var postImg = file.path.split(path.sep).pop();
    var pv = fields.pv;
    // 校验参数
    try {
      if (!title.length) {
        throw new Error('请填写标题');
      }
      if (!article.length) {
        throw new Error('请填写内容');
      }
    } catch (e) {
      req.flash('error', e.message);
      return res.redirect('back');
    }
    var post = new Post({
      title:title,
      author:author,
      article:article,
      postImg:postImg,
      publishTime:moment(new Date()).format('YYYY-MM-DD HH:mm:ss').toString(),
      pv:pv
    });
    post.save(function(err){
      if(err){
        console.log('文章发表出现错误');
        req.flash('error','文章发表出现错误');
        return res.redirect('/post');
      }
      console.log('文章录入成功');
      req.flash('success','文章录入成功');
      res.redirect('/');
    });
  });
});
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问