ファイルをアップロードするとき、非同期アップロードの効果を実現するために、通常は iframe 形式でファイルをアップロードすることを選択しますが、サーバーから返されたデータを ajax のように処理してファイル サイズやファイル スタイルを調整することはできません。そのため、一般的には、アップロードされるファイルのサイズと形式を js を使用して事前に判断し、その後サーバー上で再度判断することを考えます (ブラウザーがスクリプト ファイルの実行を拒否しないようにするため)。
次に、js を使用してファイル サイズを決定する方法を示します。
var url = window.location.href, type = url .substr(url.lastIndexOf('/') 1);
// console.log(type);
var allowedType = {
".bmp":1, ".png" :1、".jpeg":1、".jpg":1、".gif":1、
".mp3":2、".wma":2、".wav":2、"。 amr": 2、
".rm":3、".rmvb":3、".wmv":3、".avi":3、".mpg":3、".mpeg":3、 ".mp4 ":3
};
var allowedSize = {1:2097152, 2:5242880, 3:20971520};
var errMsg = {
"0" : '画像の形式は間違っています
'
'オーディオ形式が間違っています
'
'ビデオ形式が間違っています
',
"1" : '画像形式が間違っています',
"2" : '音声形式が正しくありません'、
"3" : 'ビデオ形式が正しくありません'
};
var errSizeMsg = {
'1': '画像ファイルは2M 未満 ',
'2':'音声ファイルは 5M 未満',
'3':'ビデオ ファイルは 20M 未満',
}
function checkFileType(filename, type ){
var ext = filename.substr(filename.lastIndexOf(".")).toLowerCase(),
res = allowedType[ext]
if (type == 0) {
return !!res;
} else {
return type == res;
}
function checkFileSize(target, size){
var isIE = /msie/i. test(navigator.userAgent) && !window.opera;
var fileSize = 0;
if (isIE && !target.files)
var filePath =
var fileSystem = new ActiveXObject("Scripting .FileSystemObject");
var file = fileSystem.GetFile (filePath);
fileSize = file.Size; else {
fileSize = target.files; ].size;
}
// var fsize = fileSize / 1024*1024;
if(parseInt(fsize) >= parseInt(size)){
return false; else{
true を返す ;
}
関数 Upload(obj){
var filename = jQuery.trim(jQuery('#uploadFile').val()); >if (!filename || filename == ""){ // 送信前に再確認します
alert('アップロードするファイルを選択してください');
return false;
if (! checkFileType(filename, type) ){
alert('ファイル形式が正しくありません');
return false;
}
var ext = filename.substr(filename.lastIndexOf(".") ).toLowerCase();
var res =allowType[ext];
if(!checkFileSize(obj,allowSize[res])){
alert(errSizeMsg[res]); ;
}
//その他の処理
}
//uploadFile はアップロード コントロールの ID、obj はアップロード コントロール自体 (this)