Download a zip file in AngularJS - angularjs
Trying to have a zip file download in AngularJS I looked at AngularJS: download pdf file from the server and coded my controller as:
RolloutService.export(rollout.id, function(data, status, headers) {
var headers = headers();
var filename = headers['download-filename'] || 'file';
var octetStreamMime = 'application/octet-stream';
var contentType = headers['Content-Type'] || octetStreamMime;
if (navigator.msSaveBlob) {
var blob = new Blob([data], { type: contentType });
navigator.msSaveBlob(blob, filename);
} else {
var urlCreator = window.URL || window.webkitURL || window.mozURL || window.msURL;
if (urlCreator) {
var link = document.createElement("a");
if ("download" in link) {
var blob = new Blob([data], { type: contentType });
var url = urlCreator.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", filename);
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
link.dispatchEvent(event);
} else {
var blob = new Blob([data], { type: octetStreamMime });
var url = urlCreator.createObjectURL(blob);
window.location = url;
}
}
}
});
But my file comes partly only.
Trying to unzip it gives:
stephane#stephane-ThinkPad-X60:~> unzip -l file
Archive: file
error [file]: missing 96319383 bytes in zipfile
(attempting to process anyway)
error [file]: start of central directory not found;
zipfile corrupt.
Note that if skipping the controller and going for a direct window.open() then the file comes complete and can be unzipped.
On the controller export request, the browser console shows the following headers:
Remote Address:127.0.0.1:8080
Request URL:http://localhost:8080/nitro-project-rest/rollouts/2/export
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en
Authorization:Basic bnNuQG5zbi5jb206ZXRvaWxl
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost:9000
Referer:http://localhost:9000/
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36
Response Headers
Access-Control-Allow-Headers:Accept-Language,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization
Access-Control-Allow-Methods:POST, PUT, GET, OPTIONS, DELETE
Access-Control-Allow-Origin:http://localhost:9000
Access-Control-Max-Age:3600
Cache-Control:no-store
Cache-Control:no-cache
Content-Disposition:attachment; filename="Orange-rollout-rollout-export.zip"
Content-Length:1960
Content-Type:application/zip
Date:Wed, 05 Nov 2014 20:33:31 GMT
download-filename:Orange-rollout-rollout-export.zip
Expires:Thu, 01 Jan 1970 00:00:00 GMT
Pragma:no-cache
Server:Apache-Coyote/1.1
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-XSS-Protection:1; mode=block
My $http service was corrupting the file when sending the request.
I needed to add the following configuration:
responseType: 'arraybuffer'
as in:
factory.rolloutExport = function(rolloutId, successCallback, failureCallback) {
$http({
url: ENV.NITRO_PROJECT_REST_URL + '/rollouts/' + rolloutId + '/export',
method: 'GET',
responseType: 'arraybuffer',
cache: false,
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': AuthService.getCredentialsHeaders()
}
}).success(successCallback).error(failureCallback);
};
Now the zip file comes back untouched by any encoding converter.
Related
Angularjs POST request status pending
I need your help, dunno no how to solve it, I'm using MEAN stack for simple app, that has a field with input tag inside and when i fill it the data is sending to server and save in db, the problem is that post request cant reach the server. heres is my post: $http({ method: 'POST', url: 'http://localhost:3000/api/message', headers: {'Content-Type': 'application/json'}, data: JSON.stringify({msg: $scope.message}) }). success(function(response) { console.log("Success " + JSON.stringify(response)); }). error(function(response) { console.log("Error " + JSON.stringify(response)); }); server side: app.post('/api/message', function(req,res) { var message = new Message(req.body); message.save(); res.status(200); }) app.get('/api/message', function(req,res) { Message.find(function(err,message) { if(err) { res.send(err); } else { res.json(message); } }) }) and this is what i get in browser dev tool Request URL:http://localhost:3000/api/message Request Headers !Provisional headers are shown Accept:application/json, text/plain, */* Content-Type:application/json Origin:http://localhost:3000 Referer:http://localhost:3000/? User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36 Request Payload view source {msg: "3232"} msg:"3232"
Following could be the issue actual request is not being sent from the code or browser is using cached data some adBlocker or some extension is blocking the request try removing http://localhost:3000 from the url
Angular FormData filename encoding
I'm having problems with angular file upload filename ecoding. Example: uploading file žžž.txt. Result: žžž.txt Relevent Html form parts: <form id="fileupload" action="/filestore/services/process/upload" method="POST" enctype="multipart/form-data" data-ng-app="MyApp" data-ng-controller="DemoFileUploadController" data-file-upload="options" <input type="file" name="files[]" multiple ng-disabled="disabled" file-change="uploadFile($event, files)"> File controller: $scope.uploadFile = function($event, files) { var file = files[0]; var data = new FormData(); console.log(file); console.log(data); data.append('file-0', file); $.ajax({ url: uploadUrl, data: data, cache: false, contentType: false, processData: false, type: 'post', success: function(data) { $scope.reload(); } }); }; File object (printed by console.log(file)): lastModified 1467975647307 lastModifiedDate Date {Fri Jul 08 2016 14:00:47 GMT+0300 (FLE Standard Time)} name "žžž.txt" size 7 type "text/plain" Post request data body: Source -----------------------------2159279631001 Content-Disposition: form-data; name="file-0"; filename="žžž.txt" Content-Type: text/plain -----------------------------2159279631001-- As you can see from data/code, FormData is forming data object with incorrect filename, while File object itself is correct...any ideas why is that? How should I solve this? Edit: Request headers: Content-Type multipart/form-data; boundary=---------------------------9275749615024 User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0 X-Requested-Wit XMLHttpRequest Response headers: Content-Length 337 Content-Type application/json;charset=UTF-8 Server Apache-Coyote/1.1
You should set the contentType and encoding on your ajax request. $.ajax({ url: uploadUrl, data: data, cache: false, contentType: "application/x-www-form-urlencoded;charset=UTF-8", processData: false, type: 'post', success: function(data) { $scope.reload(); } }); note that you should change charset To the specific charset you are using and wich contains ž Also if you are using a backend. Make sure it uses the correct character encoding as well UTF-8 should do the trick
S3 putObject fails using aws-sdk
It's driving me crazy, any help would be much appreciated! To set up my bucket in S3 I followed http://www.cheynewallace.com/uploading-to-s3-with-angularjs/ Regarding this post I made following "improvements" by extended the policy with a wildcard and giving more rights { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTorrent", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTorrent", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl" ], "Resource": [ "arn:aws:s3:::photos-eu/*" ] } ] } and added < ExposeHeader>ETag< /ExposeHeader > to the Cors settings of the bucket Then my angular service using the aws-sdk look like /// <reference path="../../../typings/tsd.d.ts" /> module Services { export interface IS3UploadService { upload(imgName:string, imgData:string):ng.IPromise<{}>; } export class S3UploadService implements IS3UploadService { static $inject = ['$q']; private bucket:AWS.S3; constructor(private $q:ng.IQService) { var credentials = new AWS.Credentials("myAccessKeyId", "mySecretAccessKey"); AWS.config.update(credentials); AWS.config.region = "eu-west-1"; this.bucket = new AWS.S3({params: {Bucket: 'peterparker-photos-eu', maxRetries: 10, region: "eu-west-1"}}); } upload(imgName:string, imgData:string):ng.IPromise<{}> { var deferred = this.$q.defer(); var params:AWS.s3.PutObjectRequest = { Bucket: "peterparker-photos-eu", Key: imgName, Body: imgData, ContentType: "image/jpeg", ContentEncoding: "Base64" }; this.bucket.putObject(params, (err:any, data:any) => { if (err) { console.error("->" + JSON.stringify(err)); deferred.reject(err); } else { console.info(data); deferred.resolve(data); } }); return deferred.promise; } } } angular.module('App') .service('S3UploadService', Services.S3UploadService); For my test purpose, I push in the imgData an img encoded as Base64, something like "/9j/4AAQSkZJRgABAgAAZABkA...." (of course a valid image converted with http://base64-image.de) And as result, each time I try, I've got following error {"line":25,"column":24996,"sourceURL":"http://localhost:8100/lib/aws-sdk/dist/aws-sdk.min.js","message":"The request signature we calculated does not match the signature you provided. Check your key and signing method.","code":"SignatureDoesNotMatch","region":null,"time":"2016-06-08T15:12:09.945Z","requestId":null,"statusCode":403,"retryable":false,"retryDelay":60.59883770067245} So much fun... Update headers: General Request URL:https://peterparker-photos-eu.s3-eu-west-1.amazonaws.com/1465408512724.jpg Request Method:PUT Status Code:403 Forbidden Remote Address:54.231.131.16:443 Response headers Access-Control-Allow-Methods:HEAD, GET, PUT, POST, DELETE Access-Control-Allow-Origin:* Access-Control-Expose-Headers:ETag, x-amz-meta-custom-header Connection:close Content-Type:application/xml Date:Wed, 08 Jun 2016 17:55:20 GMT Server:AmazonS3 Transfer-Encoding:chunked Vary:Origin, Access-Control-Request-Headers, Access-Control-Request- Method x-amz-id-... x-amz-request-id:... Request Headers Accept:*/* Accept-Encoding:gzip, deflate, sdch, br Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4,de;q=0.2 Authorization:AWS ... Connection:keep-alive Content-Encoding:Base64 Content-Length:38780 Content-MD5:... Content-Type:image/jpeg; charset=UTF-8 Host:peterparker-photos-eu.s3-eu-west-1.amazonaws.com Origin:http://localhost:8100 Referer:http://localhost:8100/?ionicplatform=ios User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 X-Amz-Date:Wed, 08 Jun 2016 17:55:20 GMT X-Amz-User-Agent:aws-sdk-js/2.3.18 Request payload Img base64 code Update Even by trying to upload a non Base64 content it finish with the same error var paramsHtml:AWS.s3.PutObjectRequest = { Bucket: "peterparker-photos-eu", Key: "HelloWorld.html", Body: "The Body", ContentType: "text/html" }; Update #2 I moved to a solution with a signed URL generated by my node js server as described in following solution, still got the same error as result...but I least I try ;) upload file from angularjs directly to amazon s3 using signed url
Freak I finally find the solution or at least a solution. After migrating my client aws-sdk based solution to a solution where the server generate a signedUrl I was still facing the same error. Short story long, it fixed the problem by setting in both side the Content-type for the header. My code if someone face the same problem one day: Server Node.js var AWS = require('aws-sdk'); AWS.config.update({accessKeyId: "myKey", secretAccessKey: "mySecret"}); AWS.config.region = 'eu-west-1'; app.post('/api/images', securityPolicy.authorise, function (req, res) { var s3 = new AWS.S3(); var imgName = req.body.imgName; var contentType = req.body.contentType; // Expires in seconds var params = {Bucket: 'photos-eu', Key: imgName, Expires: 600, ContentType: contentType}; s3.getSignedUrl('putObject', params, function (err, url) { if (err) { res.status(500).json({ error: "Presigned S3 url for putObject can't be created. " + JSON.stringify(err) }); } else { res.json({url: url}); } }); }); Client angular: First or course there is the part to call the node server, obvious POST to my server And then the second part processing the signedURL private uploadToS3(preSignedUrl:string, imgData:string):ng.IPromise<{}> { var deferred = this.$q.defer(); // Post image to S3 this.$http({ method: 'PUT', url: preSignedUrl, headers: {'Content-Type': 'image/jpeg'}, data: imgData }) .then((response:any) => { console.log("Image uploaded to S3" + JSON.stringify(response)); deferred.resolve(); }, (response:any) => { console.log("Error Presigned URL" + JSON.stringify(response)); deferred.reject(response); }); return deferred.promise; }
AngularJs download excel
I'm trying to download an excel file from server in angularjs but I'm getting rare characters when I try to generate a blob. Here is my server response (an array of bytes): [-48,-49,17,-32,-95,-79,26,-31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,0,3,0,-2,-1,9,0,6,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,7,0,0,0,1,0,0,0,-2,-1,-1,-1,0,0,0,0,8,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,82,0,111,0,111,0,116,0,32,0,69,0,110,0,116,0,114,0,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,5,1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,10,0,0,0,0,0,0,87,0,111,0,114,0,107,0,98,0,111,0,111,0,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,8,16,0,0,6,5,0,-45,16,-52,7,65,0,0,0,6,0,0,0,-31,0,2,0,-80,4,-63,0,2,0,0,0,-30,0,0,0,92,0,112,0,7,0,0,114,111,100,114,105,103,111,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,66,0,2,0,-80,4,97,1,2,0,0,0,61,1,2,0,0,0,-100,0,2,0,14,0,25,0,2,0,0,0,18,0,2,0,0,0,19,0,2,0,0,0,-81,1,2,0,0,0,-68,1,2,0,0,0,61,0,18,0,104,1,14,1,92,58,-66,35,56,0,0,0,0,0,1,0,88,2,64,0,2,0,0,0,-115,0,2,0,0,0,34,0,2,0,0,0,14,0,2,0,1,0,-73,1,2,0,0,0,-38,0,2,0,0,0,49,0,21,0,-56,0,0,0,-1,127,-112,1,0,0,0,0,0,0,5,0,65,114,105,97,108,49,0,21,0,-56,0,0,0,-1,127,-112,1,0,0,0,0,0,0,5,0,65,114,105,97,108,49,0,21,0,-56,0,0,0,-1,127,-112,1,0,0,0,0,0,0,5,0,65,114,105,97,108,49,0,21,0,-56,0,0,0,-1,127,-112,1,0,0,0,0,0,0,5,0,65,114,105,97,108,30,4,26,0,5,0,21,0,0,34,36,34,35,44,35,35,48,95,41,59,40,34,36,34,35,44,35,35,48,41,30,4,31,0,6,0,26,0,0,34,36,34,35,44,35,35,48,95,41,59,91,82,101,100,93,40,34,36,34,35,44,35,35,48,41,30,4,32,0,7,0,27,0,0,34,36,34,35,44,35,35,48,46,48,48,95,41,59,40,34,36,34,35,44,35,35,48,46,48,48,41,30,4,37,0,8,0,32,0,0,34,36,34,35,44,35,35,48,46,48,48,95,41,59,91,82,101,100,93,40,34,36,34,35,44,35,35,48,46,48,48,41,30,4,44,0,42,0,39,0,0,95,40,42,32,35,44,35,35,48,95,41,59,95,40,42,32,40,35,44,35,35,48,41,59,95,40,42,32,34,45,34,95,41,59,95,40,64,95,41,30,4,53,0,41,0,48,0,0,95,40,34,36,34,42,32,35,44,35,35,48,95,41,59,95,40,34,36,34,42,32,40,35,44,35,35,48,41,59,95,40,34,36,34,42,32,34,45,34,95,41,59,95,40,64,95,41,30,4,61,0,44,0,56,0,0,95,40,34,36,34,42,32,35,44,35,35,48,46,48,48,95,41,59,95,40,34,36,34,42,32,40,35,44,35,35,48,46,48,48,41,59,95,40,34,36,34,42,32,34,45,34,63,63,95,41,59,95,40,64,95,41,30,4,52,0,43,0,47,0,0,95,40,42,32,35,44,35,35,48,46,48,48,95,41,59,95,40,42,32,40,35,44,35,35,48,46,48,48,41,59,95,40,42,32,34,45,34,63,63,95,41,59,95,40,64,95,41,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,0,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,1,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,1,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,2,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,2,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,-11,-1,32,0,0,-12,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,0,0,0,0,1,0,32,0,0,0,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,1,0,43,0,-11,-1,32,0,0,-8,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,1,0,41,0,-11,-1,32,0,0,-8,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,1,0,44,0,-11,-1,32,0,0,-8,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,1,0,42,0,-11,-1,32,0,0,-8,0,0,0,0,0,0,0,0,-64,32,-32,0,20,0,1,0,9,0,-11,-1,32,0,0,-8,0,0,0,0,0,0,0,0,-64,32,-109,2,4,0,16,-128,3,-1,-109,2,4,0,17,-128,6,-1,-109,2,4,0,18,-128,4,-1,-109,2,4,0,19,-128,7,-1,-109,2,4,0,0,-128,0,-1,-109,2,4,0,20,-128,5,-1,96,1,2,0,0,0,-123,0,39,0,30,7,0,0,0,0,31,0,99,117,101,115,116,105,111,110,97,114,105,111,95,53,53,52,57,56,99,97,99,48,48,97,51,100,101,98,48,100,102,-116,0,4,0,1,0,1,0,-82,1,4,0,1,0,1,4,23,0,8,0,1,0,0,0,0,0,0,0,-4,0,-105,1,34,0,0,0,34,0,0,0,15,0,0,78,111,109,98,114,101,32,112,97,99,105,101,110,116,101,26,0,0,84,46,32,105,100,101,110,116,105,102,105,99,97,99,105,-13,110,32,112,97,99,105,101,110,116,101,6,0,0,73,80,83,83,45,52,6,0,0,73,80,83,83,45,49,12,0,0,67,117,101,115,116,105,111,110,97,114,105,111,6,0,0,73,80,83,83,45,51,6,0,0,73,80,83,83,45,50,23,0,0,73,100,101,110,116,105,102,105,99,97,99,105,-13,110,32,112,97,99,105,101,110,116,101,6,0,0,73,80,83,83,45,56,2,0,0,73,68,6,0,0,78,-6,109,101,114,111,28,0,0,73,80,83,83,95,85,82,73,78,65,82,89,95,81,85,65,76,73,84,89,95,79,70,95,76,73,70,69,10,0,0,73,80,83,83,95,83,67,79,82,69,17,0,0,70,101,99,104,97,32,100,101,32,115,111,108,117,99,105,-13,110,6,0,0,73,80,83,83,45,54,6,0,0,73,80,83,83,45,55,6,0,0,73,80,83,83,45,53,1,0,0,53,24,0,0,53,53,52,57,56,99,97,99,48,48,97,51,100,101,98,48,100,102,100,98,50,100,98,57,1,0,0,54,2,0,0,49,48,1,0,0,48,4,0,0,73,80,83,83,12,0,0,79,99,99,97,115,105,111,110,97,108,108,121,5,0,0,49,50,49,50,50,1,0,0,49,12,0,0,49,32,116,111,32,54,32,116,105,109,101,115,1,0,0,50,11,0,0,51,32,77,97,121,44,32,50,48,49,53,1,0,0,56,16,0,0,77,111,115,116,32,111,102,32,116,104,101,32,116,105,109,101,3,0,0,79,110,101,14,0,0,114,111,100,114,105,103,111,32,99,97,114,100,105,111,1,0,0,55,-1,0,42,0,8,0,93,5,0,0,12,0,0,0,-39,5,0,0,-120,0,0,0,66,6,0,0,-15,0,0,0,-115,6,0,0,60,1,0,0,-41,6,0,0,-122,1,0,0,10,0,0,0,9,8,16,0,0,6,16,0,-69,13,-52,7,-63,0,0,0,6,0,0,0,11,2,20,0,0,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,-10,9,0,0,13,0,2,0,1,0,12,0,2,0,100,0,15,0,2,0,1,0,17,0,2,0,0,0,16,0,8,0,-4,-87,-15,-46,77,98,80,63,95,0,2,0,1,0,42,0,2,0,0,0,43,0,2,0,0,0,-126,0,2,0,1,0,-128,0,8,0,0,0,0,0,0,0,0,0,37,2,4,0,0,0,-1,0,-127,0,2,0,-63,4,20,0,0,0,21,0,0,0,-125,0,2,0,0,0,-124,0,2,0,0,0,-95,0,34,0,1,0,100,0,1,0,1,0,1,0,2,0,44,1,44,1,0,0,0,0,0,0,-32,63,0,0,0,0,0,0,-32,63,1,0,85,0,2,0,8,0,0,2,14,0,0,0,0,0,3,0,0,0,0,0,17,0,0,0,8,2,16,0,1,0,0,0,17,0,-1,0,0,0,0,0,64,1,15,0,8,2,16,0,2,0,0,0,17,0,-1,0,0,0,0,0,64,1,15,0,-3,0,10,0,1,0,0,0,15,0,10,0,0,0,-3,0,10,0,1,0,1,0,15,0,9,0,0,0,-3,0,10,0,1,0,2,0,15,0,4,0,0,0,-3,0,10,0,1,0,3,0,15,0,13,0,0,0,-3,0,10,0,1,0,4,0,15,0,1,0,0,0,-3,0,10,0,1,0,5,0,15,0,7,0,0,0,-3,0,10,0,1,0,6,0,15,0,0,0,0,0,-3,0,10,0,1,0,7,0,15,0,3,0,0,0,-3,0,10,0,1,0,8,0,15,0,6,0,0,0,-3,0,10,0,1,0,9,0,15,0,5,0,0,0,-3,0,10,0,1,0,10,0,15,0,2,0,0,0,-3,0,10,0,1,0,11,0,15,0,16,0,0,0,-3,0,10,0,1,0,12,0,15,0,14,0,0,0,-3,0,10,0,1,0,13,0,15,0,15,0,0,0,-3,0,10,0,1,0,14,0,15,0,8,0,0,0,-3,0,10,0,1,0,15,0,15,0,12,0,0,0,-3,0,10,0,1,0,16,0,15,0,11,0,0,0,-3,0,10,0,2,0,0,0,15,0,25,0,0,0,-3,0,10,0,2,0,1,0,15,0,18,0,0,0,-3,0,10,0,2,0,2,0,15,0,22,0,0,0,-3,0,10,0,2,0,3,0,15,0,28,0,0,0,-3,0,10,0,2,0,4,0,15,0,21,0,0,0,-3,0,10,0,2,0,5,0,15,0,24,0,0,0,-3,0,10,0,2,0,6,0,15,0,32,0,0,0,-3,0,10,0,2,0,7,0,15,0,26,0,0,0,-3,0,10,0,2,0,8,0,15,0,33,0,0,0,-3,0,10,0,2,0,9,0,15,0,31,0,0,0,-3,0,10,0,2,0,10,0,15,0,19,0,0,0,-3,0,10,0,2,0,11,0,15,0,23,0,0,0,-3,0,10,0,2,0,12,0,15,0,29,0,0,0,-3,0,10,0,2,0,13,0,15,0,30,0,0,0,-3,0,10,0,2,0,14,0,15,0,20,0,0,0,-3,0,10,0,2,0,15,0,15,0,17,0,0,0,-3,0,10,0,2,0,16,0,15,0,27,0,0,0,-41,0,8,0,4,2,0,0,20,0,-18,0,62,2,18,0,-74,6,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,29,0,15,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,10,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,-2,-1,-1,-1,-2,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] and its headers: Access-Control-Allow-Headers → Content-Type, jwt Access-Control-Allow-Methods → POST, GET, PUT, DELETE Access-Control-Allow-Origin → * Content-Disposition → attachment; filename=questionnaire_55498cac00a3deb0dfdb2db9.xls Content-Length → 13723 Content-Type → application/vnd.ms-excel; charset=UTF-8 Date → Thu, 07 May 2015 08:40:48 GMT Last-Modified → Thu, 07 May 2015 08:40:48 GMT Server → spray-can/1.3.2 In my angularjs application i have something like: // HttpService downloadRequest: function (url, handledStatuses) { var hs = handledStatuses || []; var deferred = $q.defer(); $http.get(url, {responseType: 'arraybuffer', handledStatuses: hs}) .success(function (data, status, headers, config) { deferred.resolve(data); }) .error(function (error, status, headers, config) { deferred.reject(error); }); return deferred.promise; } // Download Service getQuestionnaireReport: function (questionnaireId) { return HttpManager.downloadRequest(UrlManager.getReportsUrl() + 'questionnaires/' + questionnaireId); } // Download manager downloadFile: function (bytes, name, extension, type) { if (this.detectIE() === false) { var urlCreator = window.URL || window.webkitURL || window.mozURL || window.msURL; var link = document.createElement("a"); if ("download" in link) { var blob = new Blob([bytes], {type: type}); var url = urlCreator.createObjectURL(blob); link.setAttribute("href", url); link.setAttribute("download", name + '.' + extension); var event = document.createEvent('MouseEvents'); event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null); link.dispatchEvent(event); } } else { window.navigator.msSaveOrOpenBlob(new Blob([bytes], {type: type}), name + '.' + extension); } }, // In my controller $scope.downloadQuestionnaireReport = function (questionnaireId) { $scope.downloadPr = DoctorServices.getQuestionnaireReport(questionnaireId); $scope.downloadPr.then( function (response) { DownloadsManager.downloadFile(response, 'questionnaire_' + questionnaireId, 'xls', 'application/octet-stream'); } ); return $scope.downloadPr; }; I have already tried with different kind of content types and responseTypes, my problem is that I'm getting bizarre characters when I try to open the downloaded file like so: Am I missing something? Thank you all very much in advance.
after some hours looking for a solution to this problem, I realized that my problem was in the response marshaller I was using. At the moment I'm using spray.io as my rest services provider and for my json responses I'm using Json4s library. In this question, my server response is not correct, so the solution I found was to remove Json4s marshaller for this specific service; then all worked as expected.
AngularJs Service, File Upload, Laravel
I'm having trouble with an XHR Request, for some reason my server is not receiving my files: Here is my angular service update algorithm: 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 }); }; On my laravel controller I just have: public function update($id) { return Response::json(Input::hasFile('img')); } The file is obviously there, why can't I retrieve it in my backend? This is my request info: 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
I found the error! Apparently I can not send a file with the PUT method, I changed the method to POST and It works. In both the service and the laravel route 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 }); };