[关闭]
@pspgbhu 2016-08-21T17:21:58.000000Z 字数 1481 阅读 816

nodejs利用ajax实现网页无刷新上传图片

nodejs


通常情况下上传图片是要通过提交form表单来实现的,但是这又不可避免的产生了网页转。
利用ajax技术和FormData()对象可以有效的解决这个问题

废话不多说 直接上关键代码:

html部分

  1. <div class="form-group">
  2. <label>File input</label>
  3. <input type="file" name="file" id="file">
  4. </div>
  5. <button id="upload" class="btn btn-default">提交</button>

这里注意input标签的 type="file"


js部分:

  1. function uploadFile(){
  2. var file = document.getElementById("file")
  3. var formData = new FormData();
  4. formData.append('file',file.files[0]);
  5. $.ajax({
  6. url: '/upload',
  7. type: 'POST',
  8. data: formData,
  9. async: false,
  10. cache: false,
  11. contentType: false,
  12. processData: false,
  13. success: function(data){
  14. if(200 === data.code) {
  15. alert("上传成功!")
  16. } else {
  17. alert("上传失败!")
  18. }
  19. console.log('imgUploader upload success, data:' + data);
  20. },
  21. error: function(){
  22. $("#alert").html("与服务器通信发生错误");
  23. }
  24. });
  25. }
  26. function postPage() {
  27. var uploada = document.getElementById('upload');
  28. uploada.addEventListener("click",function () {
  29. uploadFile();
  30. },false);
  31. }
  32. window.onload = function () {
  33. postPage();
  34. }

nodejs部分:

  1. var multer = require('multer');
  2. var storage = multer.diskStorage({
  3. destination: function (req, file, cb){
  4. cb(null, './public/images')
  5. },
  6. filename: function (req, file, cb){
  7. cb(null, file.originalname)
  8. }
  9. });
  10. var upload = multer({
  11. storage: storage
  12. });
  13. //
  14. router.post('/upload', upload.single('file'), function (req, res) {
  15. res.json({
  16. code: 200,
  17. data: req.file,
  18. })
  19. });

multer是express官方推荐的文件上传中间件。

multer官方文档

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注