I all,
Я пытаюсь загрузить файл xls с помощью API-интерфейса HTML5.
У меня уже есть скрипт, который отлично работает с изображениями.
Он также работает с файлом xls, за исключением того факта, что я не могу открыть файл с помощью Excel после его загрузки ... Если я сравниваю размер, исходный файл составляет 251 904 октета, а загружаемый файл - 251 911 октетов.Я не знаю, имеет ли это значение.
Вот что я сделал:
Javascript:
reader = new FileReader();
reader.onloadend = function(evt) {
that.file = evt.target.result;
};
reader.readAsDataURL(file); // I've also try with readAsText but it's worse
файл отправляется с использованием Sproutcore Framework:
SC.Request.postUrl(url).json()
.notify(this, 'fileUploadDidComplete', fileName)
.send({ fileName: fileName, file: file });
PHP:
$httpContent = fopen('php://input', 'r');
$json = stream_get_contents($httpContent);
fclose($httpContent);
$data = json_decode($json, true);
$file = base64_decode($data['file']);
$fileName = substr(md5(time().rand()), 0, 10).$data['fileName'];
$filePath = GX_PATH."/files/tmp/".$fileName;
$handle = fopen($filePath, "w");
fwrite ($handle, $file);
fclose($handle);
Я надеюсь, что кто-нибудь поможет мне найти, что не так.
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Я нахожу другой способ, который работает на большем количестве браузеров.Я обнаружил FormData!
formData = new FormData();
formData.append("file", file);
SC.Request.postUrl(url).notify(this, 'formDataDidPost').send(formData);
Таким образом, PHP-код более прост:
$_FILES['file'];