2011-09-02 18 views
11

実際にサーバーにアップロードする前にJavascriptを使用して(クライアント側で)ファイルのサイズを確認することはできますか?Internet Explorerでアップロードする前にファイルサイズを確認するJavascript

アプリケーションはEXTJSとJava上に構築されており、Windows XPマシン上のInternet Explorer 7での使用に制限されています。 activeXの使用は許可されません。

ワークフローは次のとおりです。 アップロードするファイルを選択します。 ファイルタイプとファイルサイズを確認するために、検証がすぐに実行されます。 filesizeがlimitを超えると、GUIはエラーを表示します。 filesizeが制限内にある場合、フルファイルパスはアップロードされるサーバー側(javaサーブレット)に渡されます。

javascriptでファイルサイズの確認とフルファイルパスの読み取りが可能ですか?

答えて

0

ブラウザとjavascriptがクライアントファイルシステムにアクセスできると悪いことがあるためです。

これは積極的に拒否され、攻撃とみなされます。

Using jQuery, Restricting File Size Before Uploading

+0

方法を試してみてください。私は入力フォームを持っていると、完全なファイルパスを最初に見つけて、ファイルサイズチェックコードにそれを与える。私はuploadify、swfupload、fancifuluploadとyuiuploaderを見た。私は完全なファイルパスを "フィード"することができないようです。 – user924590

3

は、現在、移植性、Webブラウザからアップロードされたファイルのサイズを確認する方法はありません。 HTML5 File APIはこれを可能にしますが、MSIE7では利用できません。現在、MSIE10の実績があります。

エンドユーザーの名前のような機密情報が含まれている可能性があるため、アップロードされたファイルの絶対パスを特定する方法はありません。

+0

私はファイルをPRE-アップロードするのを探しています。たとえば、私がファイルを選択した後、実際のアップロードを行う前にPRIORを実行して、ファイルサイズと完全なファイルパスを取得します。 – user924590

+1

私が指摘したように、現在のところ、ファイルサイズを検出する方法はなく、ローカルパスを決める方法はありません。 – duskwuff

4

ActiveXオブジェクトで可能です。

<html> 
<head> 
<script> 
function getSize() 
{ 
    var myFSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var filepath = document.upload.file.value; 
    var thefile = myFSO.getFile(filepath); 
    var size = thefile.size; 
    alert(size + " bytes"); 
} 
</script> 
</head> 
<body> 
<form name="upload"> 
<input type="file" name="file"> 
<input type="button" value="Size?" onClick="getSize();"> 
</form> 
</body> 
</html> 
+0

コードをありがとう。私は私の最初の投稿で言及したように、ActiveXの方法を行っていません。 :) – user924590

-3

、コードの下に別の方法について

<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script> 
<script type="text/javascript"> 
$(function() { 
$("document").ready(function(){ 
     $("#myFile1").change(function() { 

     var f1=document.getElementById("myFile1").value; 
     if((f.size||f.fileSize)==09765625) 
     { 
     alert("file size is less than 1mb"); 
     } 
     else 
     { 
     alert("file size should not exceed more than 1mb"); 
       $(this).val($.data(this, 'f')); 
     return false; 
     } 

      }); 
}); 
}) 
</script> 
</head> 
<body> 

<input type='file' name="file" id="myFile1" /> 

</body> 
</html> 
+0

このコードは誤解を招く – nicoabie

関連する問題