アップロードした画像のインスタントプレビュー機能をよく使いますが、その実装方法はたくさんありますが、そのほとんどはflash+jsで実装されています。そこで私は彼に解決策を与えました:
アイデア:
1. ページのアップロードされた画像部分を iframe に配置し、埋め込まれたページのスタイルと一致するようにボーダーレスおよびスクロールレスに設定します。必要に応じてサイズを固定します
2. アップロードした画像を iframe に送信します フォームを送信した後、再度元のページ (iframe が指すページ) に戻り、サーバーからアップロードした画像のアドレスを戻します。親ページのjsコードを呼び出して画像を読み込みます
3. プログレスバーなどの効果が必要な場合は、フォーム送信後、サーブレット側でプログレスバーが出力され、jsスクリプトが継続的に送信されます。ページのコンテンツを時間内に変更します。キャンセルなどの他の関数はプッシュを参照できます。
次のコードは基本的なファイルのアップロードを実装します:
index.jsp ページにファイルのアップロードが埋め込まれます page_uploadpic.jsp
index.jsp:
... <script type="text/javascript"> /* param imgPath:img path of uploaded this function will show the uploaded img in div(id=show_img_div) */ function showUploadImg(imgPath){ if(imgPath=="")return; document.getElementById("show_img_div").innerHTML="<img src='"+imgPath+"'/>"; } </script> <body> <iframe scrolling="no"width="300" height="100" src="_uploadpic.jsp"></iframe> <!-- use to show img(uploaded) --> <div id="show_img_div"></div> ...
_uploadpic.jsp:
... <body onload="javascript:window.parent.showUploadImg('${img}');"><!--'${img}' request或者session中的图片地址(从服务器传递来的) --> <form method="post" id="upload_form" action="${pageContext.request.contextPath }/servlet/IframeTestImageServlet" enctype="multipart/form-data"> <input type="file" name="pic"/><br/><input type="submit" value="upload"/> </form> </body> ...
サーブレット: (画像のアップロードを処理するサーブレット)
//处理上传的图片 .... 代码多 此处略去 //把刚上传的图片在服务器中的地址返回到客户端 request.setAttribute("img",request.getContextPath()+"/img/mm.jpg");// '/img/mm.jpg'表示刚上传图片在服务器中的地址 request.getRequestDispatcher("/_uploadpic.jsp").forward(request, response);
ページ全体を更新せずに iframe を使用して画像をアップロードする上記の例は、編集者があなたと共有した内容のすべてです