переименование файла после загрузки из HTML-формы

0

Это форма загрузки

<html>
    <body>
        <form action="upload.php" method="post" enctype="multipart/form-data">
            <label for="file">Filename:</label>
            <input type="file" name="uploaded" id="file"><br>
            <input type="submit" name="submit" value="Submit">
        </form>
    </body>
</html>

И это php:

<?php

    $keys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    for ($i = 0; $i < 10; $i++) { 
        $photoID .= $keys[rand(0, strlen($keys)-1)];
    } 

    //add a dot (.) to the randomly generated string so the ext can be applied to it later
    $photoID2 = $photoID.".jpg";

    //This assigns the subdirectory you want to save into... make sure it exists!
    $target = "uploads/";

    //This combines the directory, the random file name, and the extension
    $target = $target . $photoID2.$ext; 

    if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) {
        echo "The file has been uploaded as ".$photoID2.$ext;
    } else {
        echo "Error: upload did not work";
    }
?>

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

  • 0
    Убедитесь, что целевая папка в $ target существует, а $ target имеет достаточные разрешения (chmod)
  • 0
    Ну, вы должны посмотреть, что на самом деле ошибка, чтобы исправить это. Как это сделать? PHP записывает свою ошибку. Загляните в файл журнала (журнал ошибок http-серверов), и вы получите ответ.
Теги:

4 ответа

1

Первый:
убедитесь, что есть каталог с именем uploads
второй:
Попробуйте предоставить соответствующие разрешения для каталога, используя chmod like

chmod -R 777 /path/to/the/directory
0

Я думаю, что я соглашусь с этим решением, это имеет для меня больше смысла, move_uploaded_files - это тот, который помещает его в каталог и дает ему имя.

<?php 

  //create random file name
    $keys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

     for ($i = 0; $i < 7; $i++)    
        {                         
      $key .=  $keys[rand(0, strlen($keys)-1)];      
      }

 //get the extension
  $ext = basename( $_FILES['uploaded']['type']);

 //choose destination, add filename and extension
   $target = "uploads/" .$key. "." . $ext; 


 //move the file to the des
   if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
 {
  echo "The file has been uploaded";
  } 
  else {
 echo "Sorry, there was a problem uploading your file.";
 }
  ?> 
0

Используйте нижеприведенный код для переименования загруженного файла

$name = $_FILES['Fixtures']['uploaded']['name'];
$tmp_name = $_FILES['uploaded']['tmp_name'];
$target_path = "images/uploads/";
$extension = end(explode('.', $name));
$randomName = 'thumbnail_' . rand(123456, 1234567890) . '.' . $extension;
/* Add the original filename to our target path.  
  Result is "images/uploads/filename.extension" */
$target_path = $target_path . basename($randomName);
$allowedImageTypes = array("image/jpeg", "image/jpg", "image/png", "image/x-png", "image/gif");
if (in_array($type, $allowedImageTypes)) {
    move_uploaded_file($tmp_name, $target_path) or die("error in thumbnail upload!");
}

Это приведет к загрузке всех файлов с переименованием файлов

  • 0
    что такое ['Светильники']? ... попробую и посмотрим, сработает ли это.
  • 0
    Извините, что в названии моей модели вы можете использовать название вашей модели, в которой работает ваша форма
0

Проверьте разрешения на доступ к папкам/если они записываются для apache.

И попытайтесь установить отчет об ошибках, так что move_uploaded_file может рассказать вам, что не так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню