Загрузите файл .xls на сервер PHP с помощью API-файла HTML5 - PullRequest
1 голос
/ 06 сентября 2011

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'];

1 Ответ

0 голосов
/ 08 декабря 2011

Я сделал это, используя следующий метод

$out = fopen($fileUploadPath ,"wb");
$in = fopen("php://input", "rb");
stream_copy_to_stream($in,$out);

Это всего лишь 3 метода, которые я использовал для записи загруженного контента на сервер.Попробуйте и посмотрите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...