МАССИВ предшествует переименованным именам файлов после загрузки - PHP

Я запускаю PHP-скрипт для загрузки файлов из HTML-формы, переименовываю их и размещаю на своем сервере. Он загружается и переименовывается, однако каждое имя файла теперь начинается со слова «Массив»
, то есть: ArrayTest Document v1.0.pdf
Я вполне уверен, что это не моя переменная $newfn, поскольку я отображаю ее в таблице, а она не отображается. .

//This gets all the other information from the form
$name=$_POST['docname'];
$version=$_POST['docver'];
$date=$_POST['docdate'];
$type=$_POST['doctype'];
$author=$_POST['docauth'];
$file=$_FILES['uploaded']['name'];

//target directory is assigned
$target = $directory;
$target = $target . basename($file) ;

//grab file extension
$filetypes = array(
'image/png' => '.png',
'image/gif' => '.gif',
'image/jpeg' => '.jpg',
'image/bmp' => '.bmp',
'application/pdf' => '.pdf');
$ext = $filetypes[$_FILES['uploaded']['type']];

//generate new filename variable "name v??.xxx"
$newfn = $name . ' ' . 'v' . $version . $ext;

//Check to see if file exists
if (file_exists($directory . $file))
{
echo $_FILES["uploaded"]["name"] . " already exists. ";
}
else
{
//if its a new file, change name and upload
    if (move_uploaded_file($_FILES["uploaded"]["tmp_name"],
        $directory . $_FILES["uploaded"] . $newfn))
        {
        echo "The file ". basename($file). " has been uploaded";
        }
        else
        {
        echo "Sorry, there was a problem uploading your file.";
        }
}

Я чувствую, что это связано с моим разделом $FILES['uploaded'] в команде move_uploaded_file. Я пробовал гуглить, но как только я упоминаю «Массив», мои результаты в гугле совсем не похожи.

Хорошо, спасибо ниже, я решил это. Для тех, кто в будущем, я удалил весь массив $_FILES, чтобы код читался как

//if its a new file, change name and upload
if (move_uploaded_file($_FILES["uploaded"]["tmp_name"],
    $directory . $newfn))

Теперь все загружается с правильной структурой имени. Спасибо.


person Hux    schedule 08.07.2012    source источник
comment
Он отображается как массив, потому что $_FILES[uploaded] — это массив.   -  person    schedule 08.07.2012


Ответы (2)


Должно быть

move_uploaded_file($_FILES["uploaded"]["tmp_name"],$directory . $_FILES["uploaded"]["name"] . $newfn)

Вы забыли указать ["name"] после $_FILES["uploaded"]

person Hyunmin Kim    schedule 08.07.2012
comment
если я помещаю ["name"], оно помещает исходное имя документа перед новым именем Original Document.pdf, становится Original Document.pdfNew Document.pdf - person Hux; 08.07.2012
comment
Если вам просто нужен New Document.pdf, нет причин включать $_FILES[uploaded][name]. Просто сделайте это $directory . $newfn - person Hyunmin Kim; 08.07.2012

В вашем файле move_uploaded_file вы используете весь массив $_FILE['uploaded'] в качестве имени, а не только имя файла. Небольшая доработка:

if (move_uploaded_file($_FILES["uploaded"]["tmp_name"],
        $directory . $_FILES["uploaded"]["name"] . $newfn))
        {

И у вас должно быть все хорошо.

person John C    schedule 08.07.2012