Я использую 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"
, но это, кажется, не делают разница]
Спасибо!
Выполните одно из следующих двух вещей для выпуска: 1. Использование "Content-Transfer-Encoding: base64" вместо "Content-Transfer-Encoding: двоичный" 2. Измените [[данные в формате base64]] с помощью [[двоичных данных iamge]]. Вы можете использовать такие инструменты, как WinHex/UltraEdit, для записи двоичных данных. – Rachel
Спасибо за ответ, @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
Lol, [этот] (http://galleryproject.org/node/22724) относится к 2004 году ... – noobeana