PHP изображение загрузить серые линии - PullRequest
1 голос
/ 11 января 2010

У меня есть пользовательский модуль drupal, который сохраняет загруженные файлы, переданные из плагина uploadify jquery. Все казалось хорошо, но на некоторых изображениях появляются серые блоки. См:

http://5oup.net/sites/default/files/360/5ouppic.jpg

Это изображение, отправленное пользователем, и я не могу воспроизвести проблему самостоятельно - насколько я понимаю, это проблема на стороне сервера, но я не уверен в том, как устранить проблему.

Вот PHP из моего модуля, который обрабатывает загрузку:

$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';

$filename = $_FILES['Filedata']['name'];
$filename = preg_replace("/[^A-Za-z0-9. ]/", '', $filename);
$filename = str_replace(" ", '_', $filename);

$targetFile =  str_replace('//','/',$targetPath) . $filename;       

$name = $filename;

mkdir(str_replace('//','/',$targetPath), 0755, true);
move_uploaded_file($tempFile,$targetFile);

Загрузка как-то застопорилась? Любые идеи о том, почему это будет только на некоторых изображениях, а не на других? Любая помощь очень благодарна!

Джеймс


РЕДАКТИРОВАТЬ - Возможность воспроизвести проблему

Я связался с пользователем и смог воссоздать проблему (то есть каждый раз, когда он загружается с серыми пикселями), используя этот jpeg:

http://5oup.net/test/sucon.jpg

Это JPEG загружает нормально:

http://5oup.net/test/hd.jpg

Я просто не могу понять разницу ?! Что на земле может происходить?

Спасибо

Ответы [ 2 ]

1 голос
/ 11 января 2010

Хотя это, конечно, могла быть ошибка передачи, которая повредила небольшую часть изображения JPG, если бы это был один инцидент, я бы сначала посмотрел на пользователя. Скорее всего, что-то пошло не так, когда они изменили размер изображения перед загрузкой. Спросите их, изменили ли они размер изображения непосредственно перед загрузкой, и как выглядит измененный файл. Попросите их по электронной почте вам все.

Может быть, вы также хотите загрузить исходный, неповрежденный файл, кто-то здесь может рассказать больше, взглянув на него.

Сначала я бы проверил, можно ли воспроизвести его на стороне пользователя из неповрежденного изображения (пусть они отправят его вам по электронной почте), и из другого изображения .


Редактировать (в комментарии не хватает места)

Очень, очень странно. Из того, что я мало знаю о формате JPG, это может быть типичным поведением, когда передача искажается всего за несколько байтов: это может повлиять на ряд блоков и привести к этому. Что это может быть, я не могу сказать - это может быть что угодно - от проблем с жестким диском (маловероятно) до некоторого брандмауэра, отфильтровывающего данные. Первым шагом, безусловно, будет получение оригинальных изображений и проверка возможности воспроизведения проблемы. Я держу пари, что не может. Затем проверка диска в порядке, и столько замены, изменения и тестирования, сколько вы можете (возможно, переместить временный каталог / обновить программное обеспечение сервера).

Если ничего не помогает, в качестве крайней меры вы можете настроить зеркальную копию сайта на другом сервере и выполнить автоматическую загрузку, чтобы увидеть, произойдет ли это снова. Селен IDE может помочь в этом.

Кстати, вы можете постобработать изображения пользователей, чтобы защитить их конфиденциальность. Данные EXIF ​​показывают довольно много, проверьте это например или это .

0 голосов
/ 11 января 2010

Я думаю, что $_SERVER['DOCUMENT_ROOT'] в конце даст путь к документу сайта без косой черты ('/').

Пожалуйста, замените вторую строку вашего кода выше на строку ниже,

$targetPath = $_SERVER['DOCUMENT_ROOT'] .'/'. $_REQUEST['folder'] . '/';

Надеюсь, это поможет вам ....

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