Javascript 角度JS POST与常规XHR

Javascript 角度JS POST与常规XHR,javascript,ajax,http,angularjs,xmlhttprequest,Javascript,Ajax,Http,Angularjs,Xmlhttprequest,尝试使用angular的$http.post() 我是这样设置的,其中file是文件输入的第一个文件 var fd = new FormData(); fd.append("content", file); fd.append("binary", true); 运行此命令可正确上载文件: var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function(){alert("Done!");}, false)

尝试使用angular的
$http.post()

我是这样设置的,其中
file
是文件输入的第一个文件

var fd = new FormData();
    fd.append("content", file);
    fd.append("binary", true);
运行此命令可正确上载文件:

var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function(){alert("Done!");}, false);
xhr.open("POST", path);
xhr.send(fd);
$http({
      method: 'POST', 
      url: path,
      data: fd
    });
但我想使用angulars$http。所以我这样做了,但没有正确上传:

var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function(){alert("Done!");}, false);
xhr.open("POST", path);
xhr.send(fd);
$http({
      method: 'POST', 
      url: path,
      data: fd
    });

我错过了什么?我尝试过将标题设置为multipart,但仍然没有骰子

你不能通过Ajax上传文件而不做其他的黑客行为。不幸的是,你不能通过angular的HTTP服务以这种方式发送文件。只需使用XHR2上传文件,就像您在第二个代码块中所做的那样。如果您需要一个更全面的解决方案,可能需要一个现有的插件。您可以阅读更多关于为什么这在angular in中不适用的信息。这不是angular解决方案,但如果您只想封装代码,可以尝试使用以下方法: