2013-07-11 3 views
4

Используя следующий код, кто-нибудь может объяснить мне, как я могу переименовать файлы изображений в разное имя во время процесса загрузки?Переименование изображения во время загрузки PHP Mysql

Вот что я работаю.

uploader.php

<?php 
include($_SERVER['DOCUMENT_ROOT'] . "/connections/dbconnect.php"); 
$dataType = mysql_real_escape_string($_POST["dataType"]); 
$title = mysql_real_escape_string($_POST["title"]); 
$fileName = basename($_FILES["image"]["name"]); 
$target_path = ($_SERVER['DOCUMENT_ROOT'] . "/images/gallery/".$fileName); 
if (file_exists($target_path)) 
{ 
    echo "An image with that file name already exists."; 
} 
elseif (move_uploaded_file($_FILES["image"]["tmp_name"], $target_path)) 
{ 
    // The file is in the images/gallery folder. Insert record into database by 
    // executing the following query: 
    $sql="INSERT INTO images (data_type, title, file_name)"."VALUES('$dataType','$title','$fileName')"; 
    $retval = mysql_query($sql); 

    echo "The image was successfully uploaded and added to the gallery :) <a href='index.php'>Add another image</a>"; 


} 
else 
{ 
    echo "There was an error uploading the file, please try again!"; 
} 
?> 

Тогда вот мой код для загрузки изображения в галерею.


<form enctype="multipart/form-data" action="uploader.php" method="POST"> 


     Category: <select class="text" name="dataType"> 
     <option value="treeremoval" selected="selected">treeremoval</option> 
     <option value="treetrimming" >treetrimming</option> 
     <option value="treebracing" >treebracing</option> 
     <option value="stumpgrinding" >stumpgrinding</option> 
     <option value="firewood" >firewood</option> 
     <option value="cleanup" >cleanup</option> 
     </select><br /> 
<br /> 




    Caption: <input type="text" name="title"><br /> 
<br /> 

    Image to upload: <input type="file" name="image"><br /> 
<br /> 




    <input type="submit" value="Upload"> 
</form> 

Я очень знакомы с использованием PHP и MySQL, так что любая помощь будет оценена. У меня есть и другие вопросы, но я думаю, я должен спросить по одному. =)

Спасибо!

ответ

4

Я хотел бы попробовать что-то вроде этого, вы создаст уникальный e id и добавьте расширение файла к нему, если это имя существует, вы зацикливаете до тех пор, пока не получите тот, который этого не сделает, затем переместите файл.

<?php 
include($_SERVER['DOCUMENT_ROOT'] . "/connections/dbconnect.php"); 

$dataType = mysql_real_escape_string($_POST["dataType"]); 
$title = mysql_real_escape_string($_POST["title"]); 

$fileData = pathinfo(basename($_FILES["image"]["name"])); 

$fileName = uniqid() . '.' . $fileData['extension']; 

$target_path = ($_SERVER['DOCUMENT_ROOT'] . "/images/gallery/" . $fileName); 

while(file_exists($target_path)) 
{ 
    $fileName = uniqid() . '.' . $fileData['extension']; 
    $target_path = ($_SERVER['DOCUMENT_ROOT'] . "/images/gallery/" . $fileName); 
} 

if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_path)) 
{ 
    // The file is in the images/gallery folder. Insert record into database by 
    // executing the following query: 
    $sql="INSERT INTO images (data_type, title, file_name)"."VALUES('$dataType','$title','$fileName')"; 
    $retval = mysql_query($sql); 

    echo "The image was successfully uploaded and added to the gallery :) <a href='index.php'>Add another image</a>"; 


} 
else 
{ 
    echo "There was an error uploading the file, please try again!"; 
} 

>

+0

Это отлично работает! Было интересно, если у вас есть время, вы можете помочь мне с некоторыми другими вещами в отношении этого кода? Если это так, напишите мне на [email protected] или мы можем пообщаться здесь? – cwd

2

Вы делаете move_uploaded_file($_FILES["image"]["tmp_name"], $target_path)

Youre $target_path от переменной $fileName

Изменить имя файла из

$fileName = basename($_FILES["image"]["name"]); 

в

'myfilename' 
+0

Меняем '$ FileName = basename ($ _ FILES ["image"] ["name"]); ' '$ myfilename = basename ($ _ FILES [" image "] [" name "]);' – cwd

+0

g @ daugaard47 что вы хотите назвать своим файлом? Скажите, вы хотите назвать это 'myfile.jpg'? Итак, '$ filename = 'myfile.jpg';' –

+0

Я хочу, чтобы он применял случайные имена. 1.jpg 2.jpg не имеет значения. Просто нужно использовать случайное имя, потому что мой клиент отправляет мне изображения с его iPhone через форму, но каждое изображение называется «образ». Вот почему мне нужен файл, переименованный во время загрузки. В конце концов, я хочу иметь возможность загружать эти изображения с моей страницы администратора в галерею с помощью моего телефона. – cwd

0

Пожалуйста, попробуйте этот код:

$sql =mysql_query("select * from table "); 
$result = mysql_num_rows($sql) +1; 

$newfilename = rename("$oldfilename", "$newfilename"); 
0

я хотел бы предложить загрузить безопасный формат изображения и ограничить размер файла

  //image upload 
      $pro_image = $_FILES['image']['name']; 
      $pro_image_tmp = $_FILES['image']['tmp_name']; 

      $fileType = $_FILES["image"]["type"]; 
      $fileSize = $_FILES["image"]["size"]; 
      $fileErrorMsg = $_FILES["image"]["error"]; 

      $fileName = preg_replace('#[^a-z.0-9]#i', '', $pro_image); 
      $nwtourimg = explode(".", $fileName); 
      if (!$pro_image_tmp) { // if file not chosen 
       echo "ERROR: Please browse for a file before clicking the upload button."; 
       exit(); 
      } else if($fileSize > 5242880) { // if file size is larger than 5 Megabytes 
       echo "ERROR: Your file was larger than 5 Megabytes in size."; 
       unlink($pro_image_tmp); // Remove the uploaded file from the PHP temp folder 
       exit(); 
      } else if (!preg_match("/.(gif|jpg|png|jpeg)$/i", $fileName)) { 
       // This condition is only if you wish to allow uploading of specific file types  
       echo "ERROR: Your image was not .gif, .jpg, or .png."; 
       unlink($pro_image_tmp); // Remove the uploaded file from the PHP temp folder 
       exit(); 
      } else if ($fileErrorMsg == 1) { // if file upload error key is equal to 1 
       echo "ERROR: An error occured while processing the file. Try again."; 
       exit(); 
      } 

      $fileExt = end($nwtourimg); 
      $fileName = time().rand().".".$fileExt; 


      move_uploaded_file("$pro_image_tmp","upload/$fileName"); 
       //image upload end 
Смежные вопросы