Наверняка некоторые уже столкнулись с проблемой передачи с использованием PHP имен файлов, содержащих кавычку (апостроф).
Есть решение в лоб: отключить магические кавычки (magic_quotes_gpc). Но это решение меня лично меня не устраивало.
И как говорится на каждую хитрую ж... найдется х... с винтом. Так вот я предлагаю решение не влоб, а в обход.
Допустим у нас есть форма:
Код:
<input type="file" name="filename">
<input type="submit name="btn" value="submit">
</form>
Меняем её на следующий код (разумеется без JavaScript тут не обойтись):
Код:
function SetNameAndSubmit(thv) { document.forms['f1'].elements['filename1'].value = thv.substring (thv.lastIndexOf ("\\\") +1, thv.length); document.forms['f1'].submit() }
</script>
<form name="f1" ENCTYPE="multipart/form-data" method="post" action="#" target="B">
<input type="file" name="filename">
<input type="hidden" name="filename1" value="">
<input type="button" value="Submit" onClick="SetNameAndSubmit(document.forms['f1'].elements['filename'].value);"></form>
Что мы будем иметь в итоге?
На стороне "получателя" данных полное имя файла будет содержаться в $_POST['filename1'] или $_REQUEST['filename1'].
Разумеется оно будет иметь вид: Ivan\'Ivanov.mp3 вместо Ivan'Ivanov.mp3.
Можете обработать его с помощью функции stripcslashes().
В то время как $_FILES['filename']['name'] все также будет содержать лишь обрезанное после кавычки имя Ivanov.mp3.