2012-03-13 33 views
0

画像をサーバーにアップロードする前にプレビューします。私は以下のスクリプトを使用しています。スタンドアロンのHTMlでも同じスクリプトが正常に動作しますが、jspで同じスクリプトを実行すると、サイズ変更されたアプリケーションイメージは表示されません。どんなヘルプも評価されます。アップロード前に画像をプレビュー

<script type="text/javascript"> 

// width to resize large images to 
var maxWidth = 200; 
// height to resize large images to 
var maxHeight = 200; 
// valid file types 
var fileTypes = [ "bmp", "gif", "png", "jpg", "jpeg" ]; 
// the id of the preview image tag 
var previewImage = "previewField"; 
// what to display when the image is not valid 
var defaultPic = "spacer.gif"; 

var globalPic; 
var extOk=false; 


function preview(what) { 

    var source = what.value; 
    var imageName = source; 
    var ext = source.substring(source.lastIndexOf(".") + 1, source.length).toLowerCase(); 
    for (var i = 0; i < fileTypes.length; i++) { 
     if (fileTypes[i] == ext) { 
      extOk = true; 
     } 
    } 
    if (extOk == true) { 
     globalPic = new Image(); 
     imageName = imageName.replace(new RegExp(/\\/g),"/"); 
     globalPic.src ="file:///" + imageName; 
     alert(globalPic.src); 
     extOk = false; 
     applyChanges(); 
    } else { 
     alert(imageName); 
     globalPic.src = defaultPic; 
     alert("THAT IS NOT A VALID IMAGE\nPlease load an image with an extention of one of the following:\n\n" 
       + fileTypes.join(", ") + "\n and not " + ext); 
    } 
} 

function applyChanges() { 


    var field = document.getElementById(previewImage); 
    var x = parseInt(globalPic.width); 
    var y = parseInt(globalPic.height); 
    if (x > maxWidth) { 
     y *= maxWidth/x; 
     x = maxWidth; 
    } 
    if (y > maxHeight) { 
     x *= maxHeight/y; 
     y = maxHeight; 
    } 
    field.style.display = (x < 1 || y < 1) ? "none" : ""; 
    field.src = globalPic.src; 
field.width = x; 
    field.height = y; 
} 
</script> 

答えて

0

あなただけのファイルAPIでこれを行うことができます応答を

var reader = new FileReader(); 
reader.onload = (function(globalPic) { return function(e) { globalPic.src = e.target.result; }; })(globalPic); 
reader.readAsDataURL(what.files[0]); 
+0

のthnx:

は正しい場所であなたのプレビュー機能にこれを追加します。しかし、IEはFileReader APIをサポートしていないようです。 コードスニペットを実装する方法を教えてください。 イメージのサイズが変更されている場合は問題があるようです。 –

+0

はい、File APIはIEではサポートされていません。すでに私の答えでコードスニペットを送ってきました。どのような画像のサイズ変更問題がありますか? – noob

+0

返信用Thnx ... MSPaintまたはMSOffice Managerを使用してサイズを変更した画像(シンプルな.JSP)は、Javascriptを使用して上記のように表示されず、残りの画像は同じコードを使用して表示されます...(ソリューション/コードスニペットIEブラウザ用)。また、スタンドアローンHTMLで同じJavascriptコードを使用すると、問題なく動作します。問題はアプリケーション(IDE Eclipse)で同じものを使用するときです –

関連する問題