簡體   English   中英

為文件上傳添加隨機名稱

[英]Appending random name to file upload

我將文件和用戶數據保存到數據庫中的表中。 現在,一切正常,除了我找不到有效的方法將隨機名稱附加到上載的文件名之外。 文件在其中重命名以供查看並在數據庫上。 這是我目前的工作。

<?php 

 $target = "files/"; 
 $target = $target . basename( $_FILES['file']['name']); 

 $title=$_POST['title'];
 $description=$_POST['description'];
 $username=$_POST['username'];
 $image=$_POST['image'];
 $timestamp=$_POST['timestamp'];
 $file=($_FILES['file']['name']);
 $from=$_POST['from'];
 $button_id=$_POST['button_id'];

 mysql_connect("", "", "") or die(mysql_error()) ; 
 mysql_select_db("") or die(mysql_error()) ; 

  mysql_query("INSERT INTO `client_files` VALUES ('$title', '$description','$username', '$image', '$timestamp', '$file', '$from', '$button_id')") ;

 if(move_uploaded_file($_FILES['file']['tmp_name'], $target)) 
 { 

echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
 } 
 else { 
  echo "Sorry, there was a problem uploading your file."; 
 } 
 ?> 

將隨機名稱附加到上載文件的最佳方法是什么?

更新:

我嘗試了以下方法,我認為這將是解決方案...

 $file = md5(uniqid(rand(), true)) . '.' . substr(strrchr(($_FILES['file']['name']), '.'), 1);

我能夠在數據庫上將文件名重命名為隨機字符串,但是一旦傳遞到文件夾后就無法對其進行更新。 我在想,也許,如果我先將其傳遞給目標,它將更改數據庫和服務器上的文件。 盡管我嘗試了以下方法,

$target = "files/"; $target = tempnam($target, "");

但是文件變得損壞並且無法讀取。

您可以在現有名稱后附加一個唯一的隨機數。 試試下面的代碼

$target = "files/"; 
$random = rand(0,9999);
$filename = basename( $_FILES['file']['name']);

$target = $target.$random.$filename ; 

將$ file變量設置為所需的隨機名稱,也可能需要保持文件擴展名不變。 我使用以下代碼

$file = md5(uniqid(rand(), true)) . '.' . substr(strrchr(($_FILES['file']['name']), '.'), 1);

移動並保存文件。

$target = $target . $file; 
move_uploaded_file($_FILES['file']['tmp_name'], $target);

您可以在上傳時重命名文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM