2016-02-17 3 views
0

Использование сценария для загрузки и переименования файла. Форма выглядит следующим образом.PHP: Загрузка и переименование изображения

<form action="" enctype="multipart/form-data" method="post"> 
<input type="text" name="shortlink" placeholder="Shortlink"><br> 
<input id="file" name="file" type="file" /> 
<input id="Submit" name="submit" type="submit" value="Submit" /> 

РНР загрузчик выглядит следующим образом

if (isset($_POST['submit'])) 
{ 
    $filename = $_FILES["file"]["name"]; 
    $file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention 
    $file_ext = substr($filename, strripos($filename, '.')); // get file name 
    $filesize = $_FILES["file"]["size"]; 
    $allowed_file_types = array('.doc','.docx','.jpg','.jpeg','.pdf'); 

    if (in_array($file_ext,$allowed_file_types) && ($filesize < 20000000000000)) 
    { 
     // Rename file 
     $newfilename = $_POST['shortlink'] . $file_ext; 
     if (file_exists("upload/" . $newfilename)) 
     { 
      // file already exists error 
      echo "You have already uploaded this file."; 
     } 
     else 
     {  
      move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename); 
      echo "File uploaded successfully.";  
     } 
    } 
    elseif (empty($file_basename)) 
    { 
     // file selection error 
     echo "Please select a file to upload."; 
    } 
    elseif ($filesize > 20000000000000) 
    { 
     // file size error 
     echo "The file you are trying to upload is too large."; 
    } 
    else 
    { 
     // file type error 
     echo "Only these file typs are allowed for upload: " . implode(', ',$allowed_file_types); 
     unlink($_FILES["file"]["tmp_name"]); 
    } 
} 

Он отлично работает, когда я пытаюсь загрузить простые текстовые файлы (.txt, .doc, .docx). Но когда я пытаюсь загрузить любые изображения .jpg, он не дает ответа. Форма просто очищается, и все. Нет сообщения об ошибке или что-то еще. Может кто-нибудь сказать мне, где ошибка лежит?

+0

Его работы аккуратные для меня. – rahul

+0

@marwej, можете ли вы рассказать нам, какую ошибку вы получаете? – Nehal

+0

есть первая проблема с первым загруженным снимком, но во второй раз, когда вы загружаете какой-либо файл расширения с другим именем, он дает ошибку, что «вы уже загрузили этот файл». – Kavya

ответ

0

Попробуйте надеюсь, что это будет работать: -

if(isset($_POST['submit'])) 
 
{ 
 
$allowedSize=2;//MB 
 
$allowedFileSize=$allowedSize*1024*1024;//Bytes 
 
$allowedExt=array('pdf','doc','docx'); 
 
$extnsn=implode(',' , $allowedExt); 
 
if($_FILES['file']['error']==0) 
 
{ 
 
if($_FILES['file']['size']<=$allowedFileSize) 
 
{ 
 
$p_image=$_FILES['file']['name']; 
 
    
 
$p_image=date('ymdHis').'_'.uniqid().'_'.$p_image; 
 
    
 
$fileInfoArray=pathinfo($p_image); 
 
$fileExt = $fileInfoArray['extension']; 
 
    
 
if(in_array($fileExt,$allowedExt)) { 
 
     $src = $_FILES['file']['tmp_name']; 
 
     $dest = "uploads/legal-internship/$p_image"; 
 
\t \t $ismoved = move_uploaded_file($src,$dest); 
 
     
 
\t \t $_POST['image'] = $p_image; 
 
      
 

 
     } else { 
 
      echo "<br>Please upload file with valid extension ($extnsn).PLease Try Again "; 
 
     } 
 
     } else { 
 
     echo "Please upload file with MAX $allowedSize MB"; 
 
     } 
 
    } else { 
 
     echo "Error while Uploading File Size Exceed to 2MB"; 
 
\t }

+0

Такая же проблема. Форма просто очищается и файл не загружается ... – marwej

0

Side Примечание: "20000000000000" = 20 терабайт. Похоже, довольно большое изображение ...

+0

Yea .. Это было просто, чтобы быть shure;) – marwej