Monday, May 13, 2024
 Popular · Latest · Hot · Upcoming
146
rated 0 times [  148] [ 2]  / answers: 1 / hits: 48768  / 12 Years ago, mon, september 10, 2012, 12:00:00

I'm uploading a file with XMLHttprequest.
Here is the JS function, that uploads a file:



var upload = function(file) {
// Create form data
var formData = new FormData();
formData.append('file', file);

var xhr = new XMLHttpRequest();

// Open
xhr.open('POST', this.options.action);

// Set headers
xhr.setRequestHeader(Cache-Control, no-cache);
xhr.setRequestHeader(X-Requested-With, XMLHttpRequest);
xhr.setRequestHeader(Content-Type, multipart/form-data);
xhr.setRequestHeader(X-File-Name, file.fileName);
xhr.setRequestHeader(X-File-Size, file.fileSize);
xhr.setRequestHeader(X-File-Type, file.type);

// Send
xhr.send(formData);
}


On the server side, in upload.php I read the file this way:



file_put_contents($filename, (file_get_contents('php://input')));


Everything works fine, except that I get a PHP Warning:



Missing boundary in multipart/form-data POST data in Unknown on line 0.



If I remove this line:
xhr.setRequestHeader(Content-Type, multipart/form-data); the warning goes away.



What should be the problem here?


More From » php

 Answers
12

Well this is strange a little bit for me, but this is what worked:



// Open
xhr.open('POST', this.options.action, true);

// !!! REMOVED ALL HEADERS

// Send
xhr.send(formData);


In this case, on server side I don't read the file sent via php://input but the file will be in the $_FILES array.



This solved my problem, but I'm still curious why appears now the file in $_FILES?



Tested in Chrome, Mozilla, Safari, and IE10.


[#83161] Friday, September 7, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jeniferjaliyahf

Total Points: 650
Total Questions: 104
Total Answers: 86

Location: Grenada
Member since Sun, Dec 20, 2020
3 Years ago
;