2010-01-01 6 views
0

У меня есть довольно стандартная форма загрузки файлов (которая также записывается в mysql db). Он работал нормально во время моего тестирования, затем я пошел и протестировал файл, который был назван всеми прописными буквами. Файл не будет загружен. Простое решение, которое я понял, просто переименуйте файл перед загрузкой с помощью «strtolower», но не повезло. Также попробовал strtoupper, все равно не повезло. Я думаю, что я тоже сталкиваюсь с этой проблемой с файлами, начинающимися с цифр. (Я сделал двойную проверку да и папка для записи.)php file upload capitalized filename issue

$upload_dir = "/path/to/the/upload/folder/entries/"; 
$new_filename = mysql_insert_id()."_".$filename; 
$tmp_name = $_FILES["filename"]["tmp_name"]; 
move_uploaded_file($tmp_name, $upload_dir . $new_filename); 

любая помощь очень ценится.

+1

Не удалось найти какие-либо проблемы с кодом. В моем приложении пользователи ежедневно загружают файлы со всеми странными именами. Никогда не сталкивался с проблемами прописных или цифр. Вы уверены, что 'mysql_insert_id()' что-то печатает? Или, случайно, он нарушает код? И что вы назначаете для '$ filename'? – Nirmal

+0

$ filename устанавливается ранее в коде и просто равен $ _FILES ["filename"] ["name"] . Я сделал еще несколько исследований в этой проблеме, и кажется, что это может быть не капитализация, это на самом деле не найти файл в файле изображения, который я пытаюсь загрузить (я сделал echo $ _FILES ["filename"] ["type"], и он ничего не возвращал). Однако, когда я проверяю свойства в файле в моем Finder, он ясно показывает, что тип файла jpeg. Я действительно застрял здесь, поэтому спасибо за любую помощь. – jmarx34

ответ

1

Нужно изолировать шаг, где происходит ошибка - что вы имеете в виду конкретно, «файл не будет загружен»? Не доходит ли файл до сервера? Не работает ли переименование? Является ли инструкция mysql, выполняющая вставку, не сформирована правильно? Если файл никогда не попадает на сервер, то у вас нет ничего, на которое нужно ссылаться strtolower.

Загрузите известный загружаемый файл, загрузите его, чтобы убедиться, что он работает, а затем переименуйте его в свою прописную и повторите попытку. Если picture.jpg работает, делает PICTURE.JPG? Или PICTURE.jpg? Мне интересно, есть ли что-то в предыдущих частях вашего кода, который решает «.JPG» (или какое-либо заглавное расширение), не является допустимой загрузкой типа «.jpg».

+0

spinn, хороший вызов для переименования файла для проверки. Так вот где я нахожусь ... В основном кажется, что иногда файлы изображений не обнаруживаются как таковые. файл jpg, который я пытался проверить (это было неудачно), был вытащен непосредственно с моего iPhone. несмотря на то, что он отображается как тип jpeg в моем Finder, когда я пытаюсь захватить [«type»] (как для записи в db, так и для общей проверки загрузки файла), он ничего не возвращает. поэтому я предполагаю, что мне нужно, чтобы каким-то образом гарантировать, что эти «изображения» пройдут. Есть предположения? – jmarx34

+0

Здесь слишком много переменных ... Я не совсем понимаю, где загрузка фактически не работает. Есть ли что-нибудь вообще в массиве $ _FILES, или это просто тот тип, который отсутствует? – spinn