2013-08-27 3 views
1

Я использую ApacheBench для тестирования модуля загрузки изображений PHP. Вещь, когда я дамп $_FILES["my_file"] Я вижу, что файл temp, хранящийся PHP, не является файлом изображения, это файл base64 (text/plain). Должен ли PHP хранить этот файл в качестве файла изображения, учитывая, что запрос POST сообщает ему, что тип содержимого загруженного файла: image/jpeg? Или PHP ведет себя как ожидалось, и моя работа - обрабатывать двоичные данные внутри $_FILES["my_file"]["tmp_name"]?

Вот как я бегу аб:

$>ab -v 4 -n 10 -c 2 -p /home/post_data.txt -T "multipart/form-data;\ 
boundary=1234567890" http://localhost/image_upload 

Вот содержание /home/post_data.txt:

--1234567890 
Content-Disposition: form-data; name="token" 
Content-Type: text/plain 

1 
--1234567890 
Content-Disposition: form-data; name="text" 
Content-Type: text/plain 

Testing 
--1234567890 
Content-Disposition: form-data; name="status" 
Content-Type: text/plain 

1 
--1234567890 
Content-Disposition: form-data; name="uploaded_file"; filename="my_image.jpg" 
Content-Type: image/jpeg 
Content-Transfer-Encoding: binary 

[[base64 image data]] 
--1234567890-- 

[Обратите внимание, что я попытался удалить "Content-Type: text/plain", но это, кажется, не делают разница]

Спасибо!

+0

Выполните одно из следующих двух вещей для выпуска: 1. Использование "Content-Transfer-Encoding: base64" вместо "Content-Transfer-Encoding: двоичный" 2. Измените [[данные в формате base64]] с помощью [[двоичных данных iamge]]. Вы можете использовать такие инструменты, как WinHex/UltraEdit, для записи двоичных данных. – Rachel

+0

Спасибо за ответ, @Rachel! Я пробовал оба предложения без успеха. [Видимо] (http://stackoverflow.com/questions/5169434/content-transfer-encoding-in-file-uploading-request) PHP игнорирует заголовок (Content-Transfer-Encoding) из моего запроса. О, и проверьте [this] (https://bugs.php.net/bug.php?id=48219) тоже! – noobeana

+0

Lol, [этот] (http://galleryproject.org/node/22724) относится к 2004 году ... – noobeana

ответ

1

Я, наконец, отказался от этого: PHP игнорирует заголовок (Content-Transfer-Encoding), и я получаю текстовый файл, содержащий огромную строку двоичных данных вместо файла изображения.

неисправность не для AB ...