Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 尝试上载带有Angular和NodeJ的图片_Javascript_Angularjs_Node.js - Fatal编程技术网

Javascript 尝试上载带有Angular和NodeJ的图片

Javascript 尝试上载带有Angular和NodeJ的图片,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,使用角度/节点设置上传图像最简单/最好的方法是什么?我目前正在尝试Multer,但在使其正常工作时遇到问题 Nodejs: import multer from 'multer'; const upload = multer({ dest: './uploads/'}); app.post('/api/entries', upload.single('file'), entryCtrl.addEntry); 这是我在Angular中的一些代码: this.addEntry = (uploadU

使用角度/节点设置上传图像最简单/最好的方法是什么?我目前正在尝试Multer,但在使其正常工作时遇到问题

Nodejs:

import multer from 'multer';
const upload = multer({ dest: './uploads/'});
app.post('/api/entries', upload.single('file'), entryCtrl.addEntry);
这是我在Angular中的一些代码:

this.addEntry = (uploadUrl, data) => {
  console.log('data', data);

  const fd = new FormData();

  for (var key in data) {
    fd.append(key, data[key]);
  }

  console.log('fd', fd);

  $http.post(uploadUrl, fd, {
    transformRequest: angular.identity,
    headers: { 'Content-Type': undefined }
  });
}
我的
数据的
控制台.log
是正确的,但是当我使用
FormData()
并循环时,
fd
是一个空对象

CTRL:

HTML:

日志:

这就是我的问题所在。我在
data.file
下获取该文件,但当尝试将其附加到
FormData()
时,会得到一个空对象。我的装订有点问题


建议?

当你说fd是一个空对象时-你确定吗
console.log(fd)
也为我显示控制台中的
FormData{}
,无论FormData对象中有什么。如果您为(fd的var f)console.log(f)编写
,它是否打印附加文件而不是?如果在开发工具中打开“网络”选项卡会怎么样?文件被发送了吗?@noppa它没有击中我的端点,因为在我的入口模型中需要pic,它没有发送pic。当我选择一个文件时,我不明白为什么它没有绑定,但它将其记录为正在传递到我的服务,并且您确定该文件不在FormData对象
fd
中吗?
console.log('fd',fd)
单独打印“FormData{}”并不意味着文件不在那里。@noppa那么如果它只打印“FormData{}”,我怎么知道文件是否在那里呢打印?
$scope.addEntry = () => {
  const uploadUrl = '/api/entries';
  return MainService.addEntry(uploadUrl, $scope.entry);
}
<form enctype="multipart/form-data">
  <fieldset>
    <input type="file" name="file" file-model="entry.file">

    <input type="text" ng-model="entry.length">

    <button type="submit" ng-click="addEntry()">Submit</button>
  </fieldset>
</form>
<pre>
  {{ entry }}
</pre>
directive("fileModel", function($parse) {

   return {
      restrict: 'A',
      link: (scope, element, attrs) => {
        const model = $parse(attrs.fileModel);
        const modelSetter = model.assign;

        element.bind('change', () => {
          scope.$apply(() => {
          modelSetter(scope, element[0].files[0]);
        });
      });
    }
  }

});
data Object {file: File, length: "12.52"}
file: FilelastModified: 1464152993000
lastModifiedDate: Wed May 25 2016 00:09:53 GMT-0500 (CDT)
name: "IMG_0022.JPG"
size: 569111type: "image/jpeg"
webkitRelativePath: ""
__proto__: Filelength: "12.52"__proto__: Object
fd FormData {}