php move_uploaded_file пытается изменить имя файла во время перемещения - PullRequest
1 голос
/ 30 ноября 2011

Я получаю сообщение об ошибке при попытке переименовать файл, взятый из html-формы, в каталог, используя следующий код. Мне нужно изменить имя файла, чтобы сделать его уникальным, конкатенируя $studyId на него. Ошибка распечатывает файл правильно originalName / studyId.extension. Я могу переместить файлы в папку «videos», если я не делаю конкатенацию и просто использую $_FILES["sonogram"]["name"] в качестве второго аргумента для move_uploaded_file. На php.net есть примеры, которые используют этот синтаксис, где вы выбираете, как вы собираетесь называть загруженный файл. так что я предполагаю что-то глупое. Я должен упомянуть, что я нахожусь на системе Windows. Любая помощь будет принята с благодарностью

$pathParts = pathinfo($_FILES["sonogram"]["name"]);
$file = $pathParts['filename'] . '/'. strval($studyId) . '.'. $pathParts['extension'];
move_uploaded_file($_FILES["sonogram"]["tmp_name"],"videos/". $file);

Ответы [ 2 ]

2 голосов
/ 30 ноября 2011

Конкатенируя '/', вы говорите Windows, что она находится в другом каталоге.Итак, файл пытается быть перемещен, например, в «videos / filename / studyId.mp4».Это означает, что каталог «имя файла» должен существовать.Если вы хотите использовать другой каталог, используйте mkdir или измените косую черту на подчеркивание или другой символ.

0 голосов
/ 30 ноября 2011

Вы пытаетесь переместить файл в папку, которая, вероятно, не существует. Ваш код попытается переместить файл в это место (с filename.txt и 1234 как $sudId):

videos/filename/1234.txt

, тогда как каталог filename, вероятно, не существует в видео.

Однако вы можете сначала создать его:

$pathParts = pathinfo($_FILES["sonogram"]["name"]);
$file = $pathParts['filename'] . '/'. strval($studyId) . '.'. $pathParts['extension'];
mkdir('videos/'.$pathParts['filename'],0777,TRUE);
move_uploaded_file($_FILES["sonogram"]["tmp_name"],"videos/". $file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...