2012-03-13 2 views
-1

Мне нужна помощь во что-то ... Я искал по всему Интернету возможность загрузить pdf-файл с помощью php-скрипта ... Я пробовал все предложения, представленные на этом форуме, и он не работает ... пожалуйста, любой помощь как можно скорее!Загрузка PHP/PDF

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Uploaded</title> 
</head> 

<body> 
<?php 
//ini_set("upload_max_filesize", 10000000); 
$uploaddir = './uploads/'; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 
//$allowed_ext = "pdf"; 
//$max_size = "9000000000000000000000"; 
define('MAX_FILE_SIZE', 0); 
echo "<p>"; 
if((($_FILES["userfile"]["type"] == "image/gif") 
    || ($_FILES["userfile"]["type"] == "image/jpeg") 
    || ($_FILES["userfile"]["type"] == "image/png") 
    || ($_FILES["userfile"]["type"] == "image/jpg") 
    || ($_FILES["userfile"]["type"] == "application/msword") 
    || ($_FILES["userfile"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document") 
    || ($_FILES["userfile"]["type"] == "text/plain") 
    || ($_FILES["userfile"]["type"] == "application/wordperfect6.0") 
    || ($_FILES["userfile"]["type"] == "application/pdf")) 
    && ($_FILES["userfile"]["size"] < 10000000)) 
    { 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    echo "File is valid, and was successfully uploaded.\n"; 
}  else { 
    echo "Upload failed"; 
} 
    } 
echo "</p>"; 
echo '<pre>'; 
echo 'Here is some more debugging info:'; 
print_r($_FILES); 
print "</pre>"; 
?> 
</body> 
</html> 
+0

Что вы пытаетесь сделать? Вы даже знаете, что делаете? –

+0

Так ли проблема, что загруженный файл PDF не соответствует типу MIME, который у вас есть ('application/pdf')? –

+0

Здесь есть несколько вещей, которые могут быть неверными. Вы должны сделать некоторую отладку, чтобы узнать, в какой момент она терпит неудачу. Добавьте 'echo '1"; 'или что-то в свой первый if-statement и' echo' 2 ";' на ваш второй оператор if и 'echo '3"; 'на ваш else-statement. Затем вы можете узнать, какой путь он принимает, чтобы увидеть, где ваш отказ. – Travesty3

ответ

0

попытайтесь напечатать тип recongnized вашего файла в инструкции else вместо просто распечатать «Ошибка загрузки».

echo ($_FILES["userfile"]["type"]); 

Возможно, признанный tyope не относится к типам, указанным в if.

+0

pdf файл не соответствует (application/pdf) – Paso

+0

Как я могу видеть, что файл, который я загрузил, уже существует и переименовать его ??? – Paso

+0

Файл pdf не соответствует (application/pdf): исправьте его, добавив новые условия в оператор if: напечатайте тип, распознанный с помощью echo ($ _ FILES ["userfile"] ["type"]) и вставьте его в новое, если с другим || условия. для проверки того, что файл уже существует, используется функция php: http://php.net/manual/en/function.file-exists.php. Например, перед файлом move_uploaded_file выполните следующее: if (file_exists ($ uploadfile)) rename else move_upload_file –

0

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

require_once $_SERVER['DOCUMENT_ROOT'] . 'upload.php'; 

// Initialize file path 
define ('UPLOAD_PATH', $_SERVER['DOCUMENT_ROOT'] . pdfFolder/"); 

// list of valid extensions, ex. array("jpeg", "xml", "bmp") 
$allowedExtensions = array("pdf", "xls"); 

// max file size in bytes 
$sizeLimit = 10 * 1024 * 1024; 

$uploader = new qqFileUploader($allowedExtensions, $sizeLimit); 

$result = $uploader->handleUpload(UPLOAD_PATH, false); 

if(sizeof($result['error']) == 0){ 
    // do what you want on success 
} 
else{ 
    echo "Error - " . $result['error']; 
} 

Вот файл uploaded.php:

<?php 

/** 
* Handle file uploads via XMLHttpRequest 
*/ 
class qqUploadedFileXhr { 
    /** 
    * Save the file to the specified path 
    * @return boolean TRUE on success 
    */ 
    function save($path) {  
     $input = fopen("php://input", "r"); 
     $temp = tmpfile(); 
//  $temp = fopen("php://temp", "wb"); 
     $realSize = stream_copy_to_stream($input, $temp); 
     fclose($input); 

     if ($realSize != $this->getSize()){    
      return false; 
     } 

     $target = fopen($path, "w");   
     fseek($temp, 0, SEEK_SET); 
     stream_copy_to_stream($temp, $target); 
     fclose($target); 

     return true; 
    } 
    function getName() { 
     return $_GET['qqfile']; 
    } 
    function getSize() { 
     if (isset($_SERVER["CONTENT_LENGTH"])){ 
      return (int)$_SERVER["CONTENT_LENGTH"];    
     } else { 
      throw new Exception('Getting content length is not supported.'); 
     }  
    } 
} 

/** 
* Handle file uploads via regular form post (uses the $_FILES array) 
*/ 
class qqUploadedFileForm { 
    /** 
    * Save the file to the specified path 
    * @return boolean TRUE on success 
    */ 
    function save($path) { 
     if(!move_uploaded_file($_FILES['file']['tmp_name'], $path)){ 
      return false; 
     } 
     return true; 
    } 
    function getName() { 
     return $_FILES['file']['name']; 
    } 
    function getSize() { 
     return $_FILES['file']['size']; 
    } 
} 

class qqFileUploader { 
    private $allowedExtensions = array(); 
    private $sizeLimit = 10485760; 
    private $file; 

    function __construct(array $allowedExtensions = array(), $sizeLimit = 10485760){   
     $allowedExtensions = array_map("strtolower", $allowedExtensions); 

     $this->allowedExtensions = $allowedExtensions;   
     $this->sizeLimit = $sizeLimit; 

     $this->checkServerSettings();  

     if (isset($_GET['file'])) { 
      $this->file = new qqUploadedFileXhr(); 
     } elseif (isset($_FILES['file'])) { 
      $this->file = new qqUploadedFileForm(); 
     } else { 
      $this->file = false; 
     } 
    } 

    private function checkServerSettings(){   
     $postSize = $this->toBytes(ini_get('post_max_size')); 
     $uploadSize = $this->toBytes(ini_get('upload_max_filesize'));   

     if ($postSize < $this->sizeLimit || $uploadSize < $this->sizeLimit){ 
      $size = max(1, $this->sizeLimit/1024/1024) . 'M';    
      die("{'error':'increase post_max_size and upload_max_filesize to $size'}");  
     }   
    } 

    private function toBytes($str){ 
     $val = trim($str); 
     $last = strtolower($str[strlen($str)-1]); 
     switch($last) { 
      case 'g': $val *= 1024; 
      case 'm': $val *= 1024; 
      case 'k': $val *= 1024;   
     } 
     return $val; 
    } 

    /** 
    * Returns array('success'=>true) or array('error'=>'error message') 
    */ 
    function handleUpload($uploadDirectory, $resample, $replaceOldFile = TRUE){ 
     if (!is_writable($uploadDirectory)){ 
      if (!mkdir($uploadDirectory, 0777, true)) { 
       die('Failed to create folders...'); 
       return array('error' => "Server error. Upload directory isn't writable." . $uploadDirectory); 
      } 
     } 

     if (!$this->file){ 
      return array('error' => 'No files were uploaded.'); 
     } 

     $size = $this->file->getSize(); 

     if ($size == 0) { 
      return array('error' => 'File is empty'); 
     } 

     if ($size > $this->sizeLimit) { 
      return array('error' => 'File is too large'); 
     } 

     $pathinfo = pathinfo($this->file->getName()); 
     $filename = $pathinfo['filename']; 
     //$filename = md5(uniqid()); 
     $ext = $pathinfo['extension']; 

     if($this->allowedExtensions && !in_array(strtolower($ext), $this->allowedExtensions)){ 
      $these = implode(', ', $this->allowedExtensions); 
      return array('error' => 'File has an invalid extension, it should be one of '. $these . '.'); 
     } 

     if(!$replaceOldFile){ 
      /// don't overwrite previous files that were uploaded 
      while (file_exists($uploadDirectory . $filename . '.' . $ext)) { 
       $filename .= rand(10, 99); 
      } 
     } 

     if ($this->file->save($uploadDirectory . $filename . '.' . $ext)){ 
      return true; 
     } else { 
      return array('error'=> 'Could not save uploaded file.' . 
       'The upload was cancelled, or server error encountered.'); 
     } 
    }  
} 

Надеется, что это помогает!

+0

спасибо за помощь, с которой она работала eith mee – Paso

Смежные вопросы