AngularJs 服务、文件上传、Laravel

标签 angularjs file-upload laravel

我在处理 XHR 请求时遇到问题,由于某种原因我的服务器未接收我的文件:

这是我的 angular.service 更新算法:

var update = function(id, name, file) {                   

    var formData = new FormData();

    formData.append('name', name);
    formData.append('img', file);  

    return $http({
        method              : 'PUT',
        url                 : '/albums/' + id,
        data                : formData,
        headers             : {'Content-Type': undefined},
        transformRequest    : angular.identity
    });

};

在我的 Laravel Controller 上,我只有:

public function update($id) {

    return Response::json(Input::hasFile('img'));

}

文件明明就在那里,为什么我无法在后端检索到它?

这是我的请求信息:

Remote Address:[::1]:8000
Request URL:http://localhost:8000/albums/1
Request Method:PUT
Status Code:200 OK

Request Headers

Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,es;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Content-Length:13811
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryJ46EVSBw57RaVu7x
Cookie:_token=eyJpdiI6IkkzSXVmdnhubFFlVnlzSnZNWVFzVWk3ZlVKSFRDNFFlNndJWUVsVGNVU2c9IiwidmFsdWUiOiI5OG5PamUrVGZkZGx0ajZONklWajJ2OTM3MWlRd2tGZ2g5S2Jja1RhVjJ4Q1wvYk9xQTB4TlRKUWxkWmdvRm1EcHlzTGRjSEdzN2U5TWNPYWxEYVExVUE9PSIsIm1hYyI6IjA4NTY0ZTlmMjAyNTk3NGQxMmFhODIxMTU3NGNiYjQ4ZDA3OTgxMTA3Yzk1MmVkNmJkMGNkYjUyMmNhMzZkNzQifQ%3D%3D; laravel_session=eyJpdiI6IjRISElnWjd3ZlwvY2k1Z1pvOERWOGxyVHlaQzEwRmlqY1FiV0tNNzZEbEs4PSIsInZhbHVlIjoiYnp4UzVqOFoxMm5MMXhQdzJhVFphSkgrRGh2b2plYXhjdXpTamJ0UjVYdGdxS0puQmpPVXhObEtyb1I3XC9HQnRFdnBMWXV0MzRmWXAybGRySGRvXC9vUT09IiwibWFjIjoiMGQ1NzUyYTBjZmU3NzQ3ZDBkYjg5ZWViOGZmYzg3ZDY1ODg0N2JmNDg1NmQyNmMwZDcxMDE5NzcxZjIxM2MxMiJ9
Host:localhost:8000
Origin:http://localhost:8000
Pragma:no-cache
Referer:http://localhost:8000/Admin/Client
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36

Request Payload

------WebKitFormBoundaryJ46EVSBw57RaVu7x
Content-Disposition: form-data; name="name"

Some Weird Album
------WebKitFormBoundaryJ46EVSBw57RaVu7x
Content-Disposition: form-data; name="img"; filename="derpino.jpg"
Content-Type: image/jpeg


------WebKitFormBoundaryJ46EVSBw57RaVu7x--

Response Headers

Cache-Control:no-cache
Connection:close
Content-Type:application/json
Date:Wed, 29 Oct 2014 12:47:20 GMT
Host:localhost:8000
Set-Cookie:laravel_session=eyJpdiI6IlQ4WlFOaG1keVhXVlA1dlluNWFZZGlMcmRQNGM3bThCRjZ6cnh4ZlorcWs9IiwidmFsdWUiOiJOZkJXNXBJQTVSTGZzWHJ4alg1SXBoN0Q2ekR6UVpnWThKQ0c4MXZOQlc1RUhNMUUraUZSTlpPYTlPTFdLQXpiYTJONkRvb29WN1djVlZkSGdaWStjQT09IiwibWFjIjoiOWI5MzEwODE2YTZlM2EzODMwZDE1YzI4YmE4M2NiYWJjMTRjMDEzOGI3YjA4NmRlMGU5NDBlZWEyMzI4MGQ3MCJ9; path=/; httponly
X-Frame-Options:SAMEORIGIN
X-Powered-By:PHP/5.5.11

最佳答案

我发现错误了!显然我无法使用 PUT 方法发送文件,我将方法更改为 POST 并且它有效。在服务和 laravel 路由中

var update = function(id, name, file) {                   

    var formData = new FormData();

    formData.append('name', name);
    formData.append('img', file);  

    return $http({
        method              : 'PUT',
        url                 : '/albums/' + id,
        data                : formData,
        headers             : {'Content-Type': undefined},
        transformRequest    : angular.identity
    });

};

关于AngularJs 服务、文件上传、Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26630923/

相关文章:

python - 使用 Python 中的 POST 请求通过网站表单上传基本文件

javascript - 如何在 ASP.net MVC 3 中成功上传文件后显示警报

php - 如何在中间件 Laravel 中获取请求的 Controller 和操作的名称

php - 找不到四位数的年份数据丢失

angularjs - 如何包含没有类型定义的第 3 方模块( Angular 拉动刷新)

php - AngularJS 和 PHP 后端

javascript - 如何使用 Javascript 将 "div"移动到某些坐标?

javascript - 使用 firebase 的 Angular 应用程序获取 $add 不是一个函数

php - mysql - php - 删除插入时 url 的第一部分

php - Laravel 没有看到我的包裹