在jsp中清除文件上传

时间:2015-04-03 03:33:42

标签: javascript html jsp struts-1

方案是上传和预览裁剪图像并保存。一切都运行正常,但是当我上传图像并按下取消对话框进行裁剪并尝试上传另一个文件时,它也会在预览中显示前一个图像。即预览前一个和最新的文件。我只想要最近上传的文件。即想要清除以前的上传。

这是jsp代码:

      function imageHandler(e2)
                {
                    document.getElementById("cropbox").src = e2.target.result;

                    initJcrop();
                    $("#dialog").dialog({
                        show: {
                            effect: "blind",
                            duration: 1000
                        }  ,

                        width:document.getElementById('cropbox').height

                    });
                }
                function readFile(e1){

                    var filename = document.getElementById('imageId').files[0];
                    var fr = new FileReader();
                    fr.readAsDataURL(filename);
                    fr.onload = imageHandler;

                    document.getElementById("isSubmit").value = "false";
                    // document.getElementById("postForm").submit();
                }



                       <span id="reuploadImg" ><html:file name="uf" property="file" size="37" onchange="readFile(this)"  styleId="imageId"  /></span>
 <div id="dialog" style="display: none" title="Preview">
                                <img id="cropbox">
                                <br/><br/>
                                <div style="width: 100%;text-align: center">
                                <input type="button" value="Save" 

    onclick="cropPic()" class="stdbutton"/>
                                    <input type="button" value="Cancel" onclick="closeDialog()" class="stdbutton"/>                                </div>
                                </div>

screenshot of preview image screen

2 个答案:

答案 0 :(得分:0)

Source

TRY

 CHANGE:

 function imageHandler(e2)
            {
                document.getElementById("cropbox").src = e2.target.result;

                initJcrop();
                $("#dialog").dialog({
                    show: {
                        effect: "blind",
                        duration: 1000
                    }  ,

                    width:document.getElementById('cropbox').height

                });
            }
            function readFile(e1){

                var filename = document.getElementById('imageId').files[0];
                var fr = new FileReader();
                fr.readAsDataURL(filename);
                fr.onload = imageHandler;

                document.getElementById("isSubmit").value = "false";
                // document.getElementById("postForm").submit();
            }

TO:

   imageHandler(e2)

                initJcrop();
                $("#dialog").dialog({
                    show: {
                        effect: "blind",
                        duration: 1000
                    }  ,

                    width:document.getElementById('cropbox').height

                });
            }
function readFile() {
  var preview = document.querySelector('#cropbox');
  var file    = document.querySelector('#imageId').files[0];
  var reader  = new FileReader();

     reader.onloadend = function () {
     preview.src = reader.result;
     imageHandler;   

    }
   if (file) {
     reader.readAsDataURL(file);
   } else {
     preview.src = "";
   }
}

答案 1 :(得分:0)

调试后我发现jcrop没有破坏他的实例,所以我使用了以下行来避免重复。

jcrop_api.destroy();