プレビュー画像をローカルにアップロード
画像をローカルで選択してプレビュー機能を実現するには、全体的に2つの方法があります.
方法1、AJaxを使用してコンポーネントをアップロードし、ファイルを選択した後、自動的にAJaxを通じてファイルをサーバーにアップロードし、画像をサーバーのアドレスに戻す
メリット:この方法ではブラウザの互換性に問題はありません.
短所:サーバへの圧力が大きい
方法2:ローカルでJSを使用して異なるブラウザに対して操作する
メリット:高速
欠点:ブラウザ間での問題の処理
方法2を重点的に説明します.
要素:
要素:
handler()関数:
ファイルパスを取得する関数:異なるブラウザで処理
方法1、AJaxを使用してコンポーネントをアップロードし、ファイルを選択した後、自動的にAJaxを通じてファイルをサーバーにアップロードし、画像をサーバーのアドレスに戻す
メリット:この方法ではブラウザの互換性に問題はありません.
短所:サーバへの圧力が大きい
方法2:ローカルでJSを使用して異なるブラウザに対して操作する
メリット:高速
欠点:ブラウザ間での問題の処理
方法2を重点的に説明します.
要素:
<table style="border: 0px; width: 400px;">
<tr>
<td align="center">
<img id="disImage"
style="display: none; filter: progid : DXImageTransform . Microsoft . AlphaImageLoader(sizingMethod = scale);"
width="106" height="106"
src="${contextPath}/admin/commonlink/pic/blank.gif" />
</td>
</tr>
</table>
<input type="file" onchange="handler()"/>
handler()関数:
var picPath = getPath(document.getElementById(picName));
if(this.getValue()==""){
document.getElementById("disImage").style.display="none";
}else{
document.getElementById('disImage').src = picPath;
document.getElementById("disImage").style.display="block";
}
ファイルパスを取得する関数:異なるブラウザで処理
function getPath(obj){
if(obj){
//ie
if (window.navigator.userAgent.indexOf("MSIE")>=1){
obj.select();
// IE
return document.selection.createRange().text;
}else if(window.navigator.userAgent.indexOf("Firefox")>=1){
//firefox
if(obj.files){
// Firefox
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}