Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 上传带有预览的图像_Javascript_Jquery_Jsp_Servlets_Yui - Fatal编程技术网

Javascript 上传带有预览的图像

Javascript 上传带有预览的图像,javascript,jquery,jsp,servlets,yui,Javascript,Jquery,Jsp,Servlets,Yui,嗨,我想上传图像(以及其他表单细节)并使用jsp和servlet预览它们。我可以做上传部分,但无法得到,如何预览前端的图像 我正在使用YUI来实现它。实际上,我正在尝试重用一个用PHP实现的示例。我在这里附上我的Servlet代码。在这种情况下,上传完成后将填充“completeFileName” protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Ser

嗨,我想上传图像(以及其他表单细节)并使用jsp和servlet预览它们。我可以做上传部分,但无法得到,如何预览前端的图像

我正在使用YUI来实现它。实际上,我正在尝试重用一个用PHP实现的示例。我在这里附上我的Servlet代码。在这种情况下,上传完成后将填充“completeFileName”

   protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {            

            if(completeFileName == null) {
                PrintWriter pout = response.getWriter();
                JSONObject obj = new JSONObject();
                obj.put("hasError", new Boolean(true));
                pout.println(obj.toString());
            }
            try {

                OutputStream out = response.getOutputStream();
                Image image = Toolkit.getDefaultToolkit().getImage(completeFileName);
                ImageIcon icon = new ImageIcon(image);
                int height = icon.getIconHeight();
                int width = icon.getIconWidth();
  BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
                ImageIO.write(bi, "jpg", out);
                out.flush();                
            } catch (Exception ex) {

            }
我的Jsp代码如下所示:

<script type="text/javascript" src="http://yui.yahooapis.com/2.3.0/build/connection/connection.js"></script>
        <script type="text/javascript" src="http://yui.yahooapis.com/2.3.0/build/utilities/utilities.js"></script>
        <script type="text/javascript">
            var $E = YAHOO.util.Event;
            var $  = YAHOO.util.Dom.get;
            var $D = YAHOO.util.Dom;
            function init(){
                var listImageHandler = {
                    success:function(o) {
                        var r = eval('(' + o.responseText + ')');
                        if(!r.hasError) {
                            var imageListCon = $('imageListCon');
                            var img = document.createElement('img');
                            //img.src = 'image.php?i=' + r.imageList[i];
                            img.src = r.fileName;
                            imageListCon.appendChild(img);
                        }
                    }
                };
                var onUploadButtonClick = function(e){
                    var uploadHandler = {
                        upload: function(o) {
                            //console.log(o.responseText);
                            $D.setStyle('indicator', 'visibility', 'hidden');
                            var r = eval('(' + o.responseText + ')');
                            if(r.hasError){
                                var errorString = '';
                                for(var i=0; i < r.errors.length; i++){
                                    errorString += r.errors[i];
                                }
                                alert(errorString);
                            }else{
                                YAHOO.util.Connect.asyncRequest('GET', 'UploadFileServlet', listImageHandler);
                            }
                        }
                    };
                    $D.setStyle('indicator', 'visibility', 'visible');
                    //the second argument of setForm is crucial,
                    //which tells Connection Manager this is an file upload form
                    YAHOO.util.Connect.setForm('testForm', true);
                    YAHOO.util.Connect.asyncRequest('POST', 'UploadFileServlet', uploadHandler);

                };
                $E.on('uploadButton', 'click', onUploadButtonClick);
                YAHOO.util.Connect.asyncRequest('GET', 'UploadFileServlet', listImageHandler);
            }

            $E.on(window, 'load', init);
        </script>        
    </head>
    <body>
        <form action="UploadFileServlet" method="POST" enctype="multipart/form-data" id="testForm">        
        <input type="file" name="testFile"><br>
        <input type="button" id="uploadButton" value="Upload"/>
        </form>
        <div class="restart"><a href="UploadFileServlet?redo=1">Redo It</a></div>
        <div  style="visibility:hidden; margin-bottom:1.5em;" id="indicator">Uploading... <img src="indicator.gif"/></div>
        <div id="imageListCon">

        </div>
    </body>

var$E=YAHOO.util.Event;
var$=YAHOO.util.Dom.get;
var$D=YAHOO.util.Dom;
函数init(){
var listImageHandler={
成功:功能(o){
var r=eval('('+o.responseText+');
如果(!r.hasError){
var imageListCon=$('imageListCon');
var img=document.createElement('img');
//img.src='image.php?i='+r.imageList[i];
img.src=r.fileName;
imageListCon.appendChild(img);
}
}
};
var onUploadButtonClick=函数(e){
var uploadHandler={
上传:功能(o){
//console.log(o.responseText);
$D.setStyle(‘指示器’、‘可见性’、‘隐藏’);
var r=eval('('+o.responseText+');
if(r.hasrerror){
var errorString='';
对于(var i=0;i
上传。。。
我无法得到回复,有人能帮忙吗

谢谢, Amit

试试这个:

试试这个:


由于安全限制,您无法在上载前预览前端图像

由于安全限制,如果您已经能够在服务器上的文件夹中上载图像,则无法在上载前预览前端图像,您可以使用页面中的图像控件轻松显示图像。将该文件夹设为临时文件夹,您可能希望在上载完成后清空该文件夹。然后,首先将文件上载到临时文件夹中,并将其显示给用户。如果用户取消该操作,则可以从文件夹中删除该文件


但请记住,这不是我们通常想象的真实图像预览。但是,由于这模拟了图像预览,因此它可能是一种选择。

如果您已经能够将图像上载到服务器的文件夹中,则可以使用页面中的图像控件轻松显示图像。将该文件夹设为临时文件夹,您可能希望在上载完成后清空该文件夹。然后,首先将文件上载到临时文件夹中,并将其显示给用户。如果用户取消该操作,则可以从文件夹中删除该文件


但请记住,这不是我们通常想象的真实图像预览。但是,由于这模拟了图像预览,因此这可能是一种选择。

我不知道YUI,因此我无法详细说明这一点,但我至少可以看出您的逻辑中存在一些缺陷:您试图将图像的整个二进制内容写回ajax响应。这是行不通的。在HTML中,只能使用
属性显示图像,该属性应指向有效的URL。比如:

<img src="/images/uploadedimage.jpg">

要实现这一点,只需将映像存储在本地磁盘文件系统或服务器端的数据库中,并在ajax响应中提供客户端可以访问映像的URL。让ajax成功处理程序使用获得的URL创建DOM元素

您需要创建一个
Servlet
,该Servlet监听此URL,并通过
FileInputStream
从本地磁盘文件系统或通过
ResultSet#getBinaryStream()
从数据库中获取图像,作为
InputStream
,并将其写入响应的
OutputStream
,以及至少具有
内容类型的一组正确的响应标题。您可以找到这样一个servlet的示例


也就是说,您真的不需要Java2D API来实现这一点。
图像
图像图标
只会不必要地增加很多开销。只需将其作为
InputStream
获取,并以通常的Java IO方式将其写入响应的
OutputStream

我不知道YUI,因此无法详细说明这一点,但我至少可以看出,您的逻辑中有几个缺陷:您试图将图像的整个二进制内容写回ajax响应。这是行不通的。在HTML中,只能使用
属性shoul显示图像