Javascript 使用$http上传文件

Javascript 使用$http上传文件,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,这个问题太难了吗? 我的客户端代码带有post数据变量,我想知道如何将文件数据添加到$http.post 我看到了一些示例,它们要么使用自定义指令,要么使用手动表单提交,这两个都不是我想要的 客户端: <input type="file" id="photo"> //file can be accessed using var photo = document.getElementById("photo").files[0]; $scope.data.photo = photo

这个问题太难了吗?

我的客户端代码带有post数据变量,我想知道如何将文件数据添加到
$http.post

我看到了一些示例,它们要么使用自定义指令,要么使用手动表单提交,这两个都不是我想要的

客户端:

<input type="file" id="photo">
//file can be accessed using
var photo = document.getElementById("photo").files[0];
$scope.data.photo = photo 
派去服役

$http.post("/admin/speakers/?" + data, token.body) //token.body = $scope.data
    .success(function(data, status, headers, config) {
     })
    .error(function(data, status, headers, config) {
    });
期望输出服务器端(使用POSTMAN-REST客户端生成)


尝试将
内容类型标题
设置为
未定义
,将
转换请求
设置为
angular.identity
(不序列化FormData对象):

Angular的默认transformRequest函数将尝试序列化FormData对象,因此我们使用identity函数覆盖它以保持数据完整。Angular的POST和PUT请求的默认内容类型头是application/json,所以我们也要更改它。通过设置“内容类型”:未定义,浏览器为我们将内容类型设置为多部分/表单数据,并填充正确的边界。手动设置“内容类型”:多部分/表单数据将无法填写请求的边界参数

()


如果你能用Angular模块扩展你的应用程序,请检查这些:并且,它们都可以作为NPM软件包提供。
$http.post("/admin/speakers/?" + data, token.body) //token.body = $scope.data
    .success(function(data, status, headers, config) {
     })
    .error(function(data, status, headers, config) {
    });
console.log(request.files, request.body);

{ photo: 
   { fieldname: 'photo',
     originalname: '01.jpg',
     name: 'fbb54fa6d588ac253ca7dab08a904356.jpg',
     encoding: '7bit',
     mimetype: 'image/jpeg',
     path: '/var/folders/jg/hkmz0fdn64g8w1jgf60j2lcw0000gn/T/fbb54fa6d588ac253ca7dab08a904356.jpg',
     extension: 'jpg',
     size: 12279,
     truncated: false,
     buffer: null } } 

{ name: 'SA',
  title: 'Dev',
  company: 'CA',
  bio: 'some bio',
  twitter: '@twitter',
  sessionId: '1' }
$http.post("/admin/speakers/?" + data, token.body, {
    transformRequest: angular.identity,
    headers: {
        'Content-Type': undefined
    }
}).success(function(data, status, headers, config) {

}).error(function(data, status, headers, config) {

});