Загружаю файлы на сервер, но после загрузки получаются большего размера...
function uploadFile(file) {
alert(file.name);
var reader = new FileReader();
reader.onload = function() {
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", function(e) {
if (e.lengthComputable) {
var progress = (e.loaded * 100) / e.total;
// alert('Loading : = '+progress+' file: '+file.name+'');
}
}, false);
/* ... можно обрабатывать еще события load и error объекта xhr.upload ... */
xhr.onreadystatechange = function () {
if (this.readyState == 4) {
if(this.status == 200) {
alert(xhr.responseText);
} else {
alert('error');
}
}
};
xhr.open('POST', '../lib/upload.php');
var boundary = "xxxxxxxxx";
// Устанавливаем заголовки.
xhr.setRequestHeader('Content-type', 'multipart/form-data; boundary="' + boundary + '"');
xhr.setRequestHeader('Cache-Control', 'no-cache');
// Формируем тело запроса.
var body = "--" + boundary + "\r\n";
body += "Content-Disposition: form-data; name='myFile'; filename='" + unescape( encodeURIComponent(file.name)) + "'\r\n"; // unescape позволит отправлять файлы с русскоязычными именами без проблем.
body += "Content-Type: application/octet-stream\r\n\r\n";
body += reader.result + "\r\n";
body += "--" + boundary + "--";
if(xhr.sendAsBinary) {
// только для firefox
xhr.sendAsBinary(body);
} else {
// chrome (так гласит спецификация W3C)
xhr.send(body);
}
};
// Читаем файл
reader.readAsBinaryString(file);
}
метод описанный на тысячи сайтов... и тупо скопированный ...
на серверной стороне выглядит так :
<?php
$uploaddir = '../uploads/';
$uploadfile = $uploaddir.basename($_FILES['myFile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['myFile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>