2011-12-28 14 views
0

可能な重複形成:私のアップロードフォームは、私が4文字という名前のファイルのみを受け入れるようにしたいはHTMLファイル形式のアップロードを指定

<form action="chainresult.php" method="post" enctype="multipart/form-data" /> 
    <div> Upload a PDB file : <br /> 
    <input type="hidden" name="MAX_FILE_SIZE" value="10485760"/> 
    <input type="file" name="userfile" id="userfile" size="50000000" /><br /> 
    <input type="submit" value="GET SEQUENCE" /> </div> 
</form> 

ある
How to restrict <input type=“file”> so that it can only select .pdf files?

を。 "ABCD.pdb"のようにpdb extentionは、どのように私はこれを達成することができますか?
upload.phpあなたは選択肢を持っている

<?php 
    $upfile = 'uploads/'.$_FILES['userfile']['name']; if (is_uploaded_file($_FILES['userfile']['tmp_name'])) 
    { 
    if (!move_uploaded_file($_FILES['userfile']['tmp_name'],upfile)) 
    { 
    echo 'Problem: Could not move file to destination directory'; 
    exit; 
    } 
    } 
    else 
    { 
    echo 'Problem: Possible file upload attack. Filename: '; 
    echo $_FILES['userfile']['name']; 
    exit; 
    } ?> 
+0

chainresult.phpにはどのようなコードがありますか? –

+0

http://stackoverflow.com/questions/4634159/how-to-restrict-input-type-file-so-that-it-can-only-select-pdf-files http://stackoverflow.com/questions/ 4328947/limit-file-format-when-use-input-type-file http://stackoverflow.com/questions/7897576/restrict-file-type-and-size-in-php-form-upload – random

答えて

0

です。ファイルがアップロードされると、一時名が与えられ、一時的に保存され、コードに応じてアップロード名(既定値)または指定された4文字が移動されます。ここには大きな問題があります...上書きしますか?あなたがmickeysoft .... yikesにいるならば、4文字はあなたに多種多様を許さない!あなたがLinuxの場合に優先順位を下げる(推奨)場合には、検索で本当に面倒かもしれません。

0

あなたは、このファイル名は8つの文字(ファイル名の1の4文字以下であるかどうかをチェックしますupload.php

$name=$_FILES['userfile']['name']; 
$ext=substr($name,-3); 
if(strlen($name)>8 || $ext!='pdb') 
{ 
echo 'file name is either more than 4 character or the extension is not supported'; 
exit; 
} 

の上部にこれらの行を追加します。そして3することができます延長の故に4 + 1 + 3)

あなたはahhmarrと同じで言ったが、私は、ファイルの拡張子を決定するために、この機能を使用していも

<script type="text/javascript"> 
     function validate() 
{ 
    var flag=true; 
    var fullName=document.getElementById('userfile').value; 
    file=fullName.match(/([^\/\\]+)$/g); 
    ex=file[0].match(/[^.]+$/); 
    if(file[0].length>8 || ex!='pdb') 
    { 
     alert('file Name or extension not supported'); 
     flag=false; 
    } 

    return flag; 
} 
</script> 
<form action="chainresult.php" method="post" enctype="multipart/form-data" onSubmit="return validate();" > 
    <div> Upload a PDB file : <br /> 
    <input type="hidden" name="MAX_FILE_SIZE" value="10485760"/> 
    <input type="file" name="userfile" id="userfile" size="50000000" /><br /> 
    <input type="submit" value="GET SEQUENCE" /> </div> 
</form> 
+0

この問題を解決しました。問題。エラーを表示します。ありがとうございますが、依然としてファイルを受け付けています。 – Geeky

+0

がアップロードされません。 ファイル名をupload.phpに送信せずにファイル名を検証する場合は、javacript を使用できます(注:javascriptを使用すると確実にjavascriptを無効にして検証をバイパスできます) – ahhmarr

0

ジャバスクリプトを通じて検証することができます:

function getExtension($str){ 
    $i = strrpos($str,'.'); 
    if(!$i) 
     return ''; 

    $l = strlen($str) - $i; 
    $ext = substr($str, $i+1, $l); 
    return $ext; 
} 

$name = $_FILES['userfile']['name']; 
$ext = getExtension($name); 
関連する問題