webForumDet fria alternativet

Autogenerera filnamn?

PHPur PHP

1 svar · 391 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Någon som kan hjälpa mig att lägga till en funktion som genererar ett unikt filnamn, i scriptet nedan!?

Tack på förhand! :e

if(isset($_FILES['userfile']))
{
 
   $userfile_name = str_replace(" ","_",$_FILES['userfile']['name']);
   $userfile_tmp = str_replace(" ","_",$_FILES['userfile']['tmp_name']);

   $userfile_size = $_FILES['userfile']['size'];
   $userfile_type = $_FILES['userfile']['type'];
 
   $userfile_thumb_name = str_replace(" ","_",$_FILES['userfile']['name']);
   $userfile_thumb_tmp = str_replace(" ","_",$_FILES['userfile']['tmp_name']);

   
  // mappen där filerna ska hamna
  $thumb_upload_dir = 'images/liten/';
  $thumb_upload_dir2 = 'images/stor/';
  
  // de tillåtna fil-typerna
  $filetypes = 'jpg,jpeg,JPEG,JPG,gif,png';
  // den största tillåtna storleken ( 1000 kB )
  $maxsize = (1024*20000);
  
  // kolla om en fil har blivit angedd
  if(empty($_FILES['userfile']['name']))
       die("Du måste ange en bild som du vill ladda upp.<br />");
  
  // kolla storleken på filen
  if($_FILES['userfile']['size'] > $maxsize)
       die("Tillåten filstorleken är '.round($maxsize / 1024).' kB.<br />");
  
  // hämta filtypen
  $types = explode(',',$filetypes);
  $file = explode('.',$_FILES['userfile']['name']);
  $extension = $file[sizeof($file)-1];

  // kolla filtypen
  if(!in_array($extension,$types))
       die("Endast '.$filetypes.' är tillåtet att laddas upp.<br />");

if (file_exists($thumb_upload_dir.$insandare1.str_replace(" ","_",$_FILES['userfile']['name'])))
       die("En bild med samma namn finns redan.<br />");

$insandare1 = minhemsida."_";  

// Gör första tumnageln
  thumb_pic(str_replace(" ","_",$_FILES['userfile']['tmp_name']), $thumb_upload_dir.$insandare1.str_replace(" ","_",$_FILES['userfile']['name']), 80, 60);

// Gör andra tumnageln
  thumb_pic(str_replace(" ","_",$_FILES['userfile']['tmp_name']), $thumb_upload_dir2.$insandare1.str_replace(" ","_",$_FILES['userfile']['name']), 800, 600);
Medlem sedan apr. 2001762 inlägg
#2

Du skulle kunna göra något sånt här:

if(isset($_FILES['userfile']))
{
 
   $userfile_name = str_replace(" ","_",$_FILES['userfile']['name']);
   $userfile_tmp = str_replace(" ","_",$_FILES['userfile']['tmp_name']);

   $userfile_size = $_FILES['userfile']['size'];
   $userfile_type = $_FILES['userfile']['type'];
 
   $userfile_thumb_name = str_replace(" ","_",$_FILES['userfile']['name']);
   $userfile_thumb_tmp = str_replace(" ","_",$_FILES['userfile']['tmp_name']);

   
  // mappen där filerna ska hamna
  $thumb_upload_dir = 'images/liten/';
  $thumb_upload_dir2 = 'images/stor/';
  
  // de tillåtna fil-typerna
	/*****START EDIT**************/
  	$allow_images = array("image/gif", "image/jpeg", "image/png", "image/pjpeg", "image/jpg");
	/*****END EDIT**************/
  // den största tillåtna storleken ( 1000 kB )
  $maxsize = (1024*20000);
  
  // kolla om en fil har blivit angedd
  if(empty($_FILES['userfile']['name']))
       die("Du måste ange en bild som du vill ladda upp.<br />");
  
  // kolla storleken på filen
  if($_FILES['userfile']['size'] > $maxsize)
       die("Tillåten filstorleken är '.round($maxsize / 1024).' kB.<br />");
  
  // hämta filtypen
	/*****START EDIT**************/
	$filename_micro = microtime(true);
	$filenameexplode = explode(".", $filename_micro);
	$randomnumber = rand(100,999);
	$filename_micro = $filenameexplode[0].$randomnumber;
	$extension = strtolower( substr($_FILES['userfile']['name'], strrpos($_FILES['userfile']['name'], ".")) );
	$_FILES['userfile']['name'] = $filename_micro.$extension;
	/*****END EDIT**************/

  // kolla filtypen
	/*****START EDIT**************/
  	if(!in_array($_FILES['userfile']['type'], $allow_images)) {
       		die("Ogiltigt filformat.<br />");
	/*****END EDIT**************/

if (file_exists($thumb_upload_dir.$insandare1.str_replace(" ","_",$_FILES['userfile']['name'])))
       die("En bild med samma namn finns redan.<br />");

$insandare1 = minhemsida."_";  

// Gör första tumnageln
  thumb_pic(str_replace(" ","_",$_FILES['userfile']['tmp_name']), $thumb_upload_dir.$insandare1.str_replace(" ","_",$_FILES['userfile']['name']), 80, 60);

// Gör andra tumnageln
  thumb_pic(str_replace(" ","_",$_FILES['userfile']['tmp_name']), $thumb_upload_dir2.$insandare1.str_replace(" ","_",$_FILES['userfile']['name']), 800, 600);

Ändrade även lite hur du kollar filtypen.

126 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)