2016-12-29 12 views
-1

問題があります。入力ファイルが空でない場合は、.pdfファイルであることを確認してください。

私はpdfファイルをアップロードできるフォームがあります。このフィールドは再構成されていません。空の場合はエラーを出力したくありません。しかし、それが空でないなら、私はファイルの拡張子を確認することを忘れました.pdfです。

どうすればいいですか?

私のPHPコードは次のとおりです。

$pdf_dir = "pdf_datoteke/"; 
$pdf_file = $pdf_dir . basename($_FILES['news_link']['name']); 
$pdf_type = pathinfo($pdf_file,PATHINFO_EXTENSION); 
$pdf_allowed = array('pdf'); 

if (empty($_POST['news_link']) === false && in_array($pdf_type, $pdf_allowed) === false) { 
       $errors[] = '<h2">* To ni pdf datoteka!</h2><br>'; 
      } 
+0

[SplFileInfo](http://php.net/manual/en/class.splfileinfo.php)を使用して行うことができます。それは「爆発」よりも優れたアプローチです。 –

答えて

0

enybodyが同じ質問をしている場合、解決策が見つかりました。

if (is_uploaded_file($_FILES['news_link']['tmp_name'])) { 
      $name = $_FILES['news_link']['name']; 
      $ext = end((explode('.', $name))); 

      if ($ext != 'pdf'){ 
       $errors[] = '<h2>* This file format is not .pdf!</h2>'; 
      } 
     } 

そして、もっとそれから1つのフォーマット、私はこのコードを入れexeptedある絵のために:私はこれが誰かのために参考になっていることを願っています

if (is_uploaded_file($_FILES['news_picture']['tmp_name'])) { 
      $image_name = $_FILES['news_picture']['name']; 
      $image_size = $_FILES['news_picture']['size']; 

      $allowed_ext = array('jpg', 'jpeg', 'png', 'gif', 'mp4'); 
      $image_ext  = pathinfo($image_name, PATHINFO_EXTENSION); 
      $image_ext  = strtolower($image_ext); 

      if (in_array($image_ext, $allowed_ext) === false) { 
       $errors[] = '<h2>* This image formati is not accepted</h2>'; 
      } 
      if ($image_size > 33554432) { 
       $errors[] = '<h2>* This image is to big!</h2>'; 
      } 
     } 

私はこのコードを配置する必要がありました。

+0

.pdfで終わるファイルは、必ずしもPDFファイルである必要はありません。 MIMEタイプを確認する - http://php.net/manual/en/function.mime-content-type.php – ivanivan

+0

ありがとうございました。それは非常に有用です。 –

0
$filename = your_filename; 
$arr = explode(".", $filename); 
$parts = count($arr); 
$is_pdf = ($arr[$parts-1]=="pdf") ? true : false; 

$is_pdfがそうでなければ、そのPDF真実ではない場合。

+0

これは助けになりません。私のコードと同じ効果があります。空の場合やpdfでない場合はエラーを返します。 –

+0

空でない場合のみ処理し、スローしないとエラーをスローする理由は... –

関連する問題