在angularjs和laravel中上载文件

在angularjs和laravel中上载文件,angularjs,laravel,file-upload,ng-file-upload,Angularjs,Laravel,File Upload,Ng File Upload,我使用ngf文件上传模块通过angularjs和laravel上传文件 这是我的html启动器: <div class="button" ngf-select="profile.uploadFiles($file, $invalidFiles)">Upload on file select</div> 这是我在Laravel中上传的API代码 public function uploadImg() { $data = I

我使用ngf文件上传模块通过angularjs和laravel上传文件

这是我的html启动器:

<div class="button" ngf-select="profile.uploadFiles($file, $invalidFiles)">Upload on file select</div> 
这是我在Laravel中上传的API代码

public function uploadImg()
{
    $data = Input::file('file');
    return $data;
} 
我的angular应用程序在9000端口上运行,laravel在默认端口上运行。 angular的请求击中了laravel中内置的api,但问题是它缺少该文件。虽然我的请求头在浏览器的网络中看起来可疑。Like内容类型不是多部分/表单数据

我使用的是相同的代码,修改后的代码与我的api同步,如fiddle中所述

奇怪的是,当我为这个小提琴提供本地API路径时,它工作得很好。但是我的项目在本地没有用。我想在我的角度方面我缺少了一些东西

我的结论

代码中没有问题,因为我可以从一个html文件(不在我的angular项目中)上传文件,该文件是我专门为测试文件上传而创建的,并且它正在运行

但是

当我试图通过我的项目上传时,它失败了。 我已附上我的控制台的图像一个案例正在工作一个(通过随机文件上传图像),另一个不工作案例(其中我通过我的项目上传文件)


我不知道下一步该怎么办。我认为在我的angular项目中有什么东西在我的上传过程中造成了障碍。

拦截器

是的,他们在上传文件时产生了问题,因为我们在拦截器中设置了头

  config.headers['Content-Type'] = 'application/x-www-form-urlencoded'; 
以及我们在拦截器中设置的默认头

  config.headers['Content-Type'] = 'application/x-www-form-urlencoded'; 
因为angular应用程序发出的每个请求都要经过拦截器,拦截器用这些头修改每个请求。所以我必须从拦截器中删除这个头

注意

别忘了在每个其他请求中添加删除的头


拦截器

是的,他们在上传文件时产生了问题,因为我们在拦截器中设置了头

  config.headers['Content-Type'] = 'application/x-www-form-urlencoded'; 
以及我们在拦截器中设置的默认头

  config.headers['Content-Type'] = 'application/x-www-form-urlencoded'; 
因为angular应用程序发出的每个请求都要经过拦截器,拦截器用这些头修改每个请求。所以我必须从拦截器中删除这个头

注意

别忘了在每个其他请求中添加删除的头


将打印更改为
返回$data
,并检查控制台以查看。“网络”选项卡。看看是什么,他给我看了同样的东西。没什么。虽然请求很好,你说的“请求很好”是什么意思。如果您可以访问请求,则使用请求获取文件,如
$request->file('file')我已经用过了。“请求很好”表示我可以从angular向laravel请求,但文件丢失。请转到控制台中的“网络”选项卡,然后转到“标题”并滚动到其底部,然后检查查询字符串参数。它将显示您是否确实发送了文件。将打印更改为
返回$data
,然后检查控制台以查看。“网络”选项卡。看看是什么,他给我看了同样的东西。没什么。虽然请求很好,你说的“请求很好”是什么意思。如果您可以访问请求,则使用请求获取文件,如
$request->file('file')我已经用过了。“请求很好”表示我可以从angular向laravel请求,但文件丢失。请转到控制台中的“网络”选项卡,然后转到“标题”并滚动到其底部,然后检查查询字符串参数。它会显示你是否真的发送了文件。