簡単なJavascriptを使用してファイルのアップロードサイズを取得するにはどうすればよいですか?
-
05-07-2019 - |
質問
いずれかのページにファイルのアップロード機能があります。 JavaScriptを使用してファイルの拡張子を確認します。次に、ユーザーが1 MBを超えるファイルをアップロードできないように制限します。 JavaScriptを使用してファイルのアップロードサイズを確認する方法はありますか。
現在、私のコードは次のようになっています。
<script language="JavaScript">
function validate() {
var filename = document.getElementById("txtChooseFile").value;
var ext = getExt(filename);
if(ext == "txt" || ext == "csv")
return true;
alert("Please upload Text files only.");
return false;
}
function getExt(filename) {
var dot_pos = filename.lastIndexOf(".");
if(dot_pos == -1)
return "";
return filename.substr(dot_pos+1).toLowerCase();
}
</script>
解決
ファイル名を取得する以外に、サイズを含むjavascriptのファイルに関するその他の詳細を見つける方法はありません。
代わりに、オーバーサイズのアップロードをブロックするようにサーバー側スクリプトを構成する必要があります。
他のヒント
http://www.w3.org/TR/FileAPI/ を参照してください。 Firefox 3.6でサポートされています。他のブラウザについては知りません。
onchange
の<input id="fileInput" type="file" />
イベント内で単純に:
var fi = document.getElementById('fileInput');
alert(fi.files[0].size); // maybe fileSize, I forget
ファイルの内容を文字列などとして返すこともできます。ただし、これもFirefox 3.6でのみ機能します。
これで、純粋なJavaScriptを使用してファイルサイズを取得できます。ほとんどすべてのブラウザーはFileReaderをサポートしています。FileReaderを使用すると、ファイルサイズを読み取ったり、サーバーにファイルをアップロードせずに画像を表示したりできます。 リンク
コード:
var oFile = document.getElementById("file-input").files[0]; // input box with type file;
var img = document.getElementById("imgtag");
var reader = new FileReader();
reader.onload = function (e) {
console.log(e.total); // file size
img.src = e.target.result; // putting file in dom without server upload.
};
reader.readAsDataURL(oFile );
次のコードを使用して、ファイルオブジェクトから直接ファイルサイズを取得できます。
var fileSize = oFile.size;
これらの答えのほとんどは、かなり時代遅れです。現在、File APIをサポートする任意のブラウザでクライアント側のファイルサイズを決定できます。これには、ほとんどの場合、IE9以前のすべてのブラウザーが含まれます。
多くのブラウザ固有のコードを使用することが可能かもしれません。 TiddlyWiki のソースをご覧ください。Windowsに接続することで、ユーザーのハードドライブに自分自身を保存することができます。スクリプトホスト(IE)、XPCOM(Mozilla)など
Webページから単純なJSでそれを行う方法はないと思います。
おそらくブラウザ拡張機能がありますが、セキュリティ上の理由からページからJavaScriptはファイルシステムにアクセスできません。
FlashとJavaには同様の制限がありますが、おそらくそれほど厳密ではありません。
できません。エンドユーザーのハードドライブからファイル情報を読み取ったり、エンドユーザーのハードドライブを使用したりできるクライアント側スクリプトの実行を許可することは、セキュリティ上の大きな懸念事項になります。
こちらをご覧ください:
http:// www.kavoir.com/2009/01/check-for-file-size-with-javascript-before-uploading.html
これはサーバー側で行う必要があると言っているすべての人々に関して、彼らはそれが絶対にスポットであることに気づきます。
私の場合、私が除外する最大サイズは128Mbですが、ユーザーが130Mbであるものをアップロードしようとすると、5分間のアップロード時間を待ってそれが大きすぎることを確認する必要がないため、使いやすさのためにページを送信する前の追加チェック。