• javascript实现点击图片文件名预览图片和修改功能


      前些天做一个新闻发布和修改的功能,通过javascript实现点击图片文件名预览图片,点击按钮将文件名变换为file文件选择,以此方法来实现修改图片功能,这里对这个工作做一个总结,希望对需要的孩纸有所帮助,也希望各位大神指点。(使用组建lightbox2.6.zip,下载地址:http://lokeshdhakar.com/projects/lightbox2/releases/lightbox2.6.zip)

    先上几张图,看看效果!操作前显示:

      

    点击文件名后:

    可以通过按键切换下一张图片:

    点击更改或者删除都可以将文件名变为file选框;

    接下来就需要servlet来完成修改的功能了。

    下边是javascript实现转化和图片预览:

    <script type="text/javascript">  function changeToFile(id) {
        var oNP = document.getElementById(id);                
        var value = oNP.value;
        oNP.outerHTML = "<input type='file' id='" + id + "' name='"+id+"' value='" + value + "' size='5' onchange='getFileName(this.id)'> ";
        document.getElementById(id).focus();
    }
                
    function getFileName(id){
        var obj = document.getElementById(id);    
        var title = obj.value;
        var size=title.length;
        var name=id+"h";
        alert(name);
        title=title.substring(12,size);
        alert(title);
        document.getElementById(name).value=title;    
    }function deleteAttachment(id){
                var oNP = document.getElementById(id);        
                changeToFile(id);
                getFileName(id);
                alert("变为file");
                var attachmentPath=id+"path";            
                alert(document.getElementById(attachmentPath).value);
                document.getElementById(attachmentPath).value="null";
                alert(document.getElementById(attachmentPath).value);
                
            }    
                
            </script>

    下边是jsp页面,其中pic_1path是为了在不修改文件的情况下正确的传递原来的路径,以免造成错误修改。

    <tr>
                                    <td>图片1:</td><td>
                                    <input type="hidden" id="pic_1path" name="pic_1path" value="<%=news.getPic_1path() %>"/>
                                    <span id="pic_1" value="<%=news.getPic_1() %>" > <a class="example-image-link" href="<%=path %>/upload/images/<%=news.getPic_1path() %>" data-lightbox="example-1"><%=news.getPic_1() %></a>
                            </span>
                        
                                    <input type="button" value="更改" onclick="changeToFile('pic_1')"/>&nbsp;
                                    <input type="button" value="删除" onclick="deleteAttachment('pic_1')"/>
                                                    
                                    <input type="hidden" id="pic_1h" name="pic_1" value="<%=news.getPic_1() %>"/>
                                    
                                    &nbsp;&nbsp;</td>
                                    </tr>
    servlet:

    public
    void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); News news = new News(); try { // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb // 用以上工厂实例化上传组件 ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB // 设置上传的地址 String uploadPath = this.getServletContext().getRealPath( "/upload/images"); List items = upload.parseRequest(request);// 得到所有的上传文件 Iterator it = items.iterator(); // 逐条处理 while (it.hasNext()) { // 得到当前文件 FileItem fi = (FileItem) it.next(); // 检查当前项目是普通表单项目还是上传文件 if (fi.isFormField()) {// 如果是普通表单项目,显示表单内容。 request.setCharacterEncoding("utf-8"); if ("id".equals(fi.getFieldName())) { news.setId(Integer.parseInt(fi.getString("utf-8"))); } else if ("title".equals(fi.getFieldName())) { news.setTitle(fi.getString("utf-8")); System.out.println(fi.getString("utf-8")); } else if ("pic_1".equals(fi.getFieldName())) { news.setPic_1(fi.getString("utf-8")); } else if ("pic_2".equals(fi.getFieldName())) { news.setPic_2(fi.getString("utf-8")); } else if ("pic_3".equals(fi.getFieldName())) { news.setPic_3(fi.getString("utf-8")); } else if ("pic_1path".equals(fi.getFieldName())) { news.setPic_1path(fi.getString("utf-8")); } else if ("pic_2path".equals(fi.getFieldName())) { news.setPic_2path(fi.getString("utf-8")); } else if ("pic_3path".equals(fi.getFieldName())) { news.setPic_3path(fi.getString("utf-8")); } else if ("time".equals(fi.getFieldName())) { news.setTime(fi.getString("utf-8")); System.out.println(fi.getString("utf-8")); } else if ("contents".equals(fi.getFieldName())) { news.setContents(fi.getString("utf-8")); System.out.println(fi.getString("utf-8")); } } else { Format format = new SimpleDateFormat("yyyyMMdd_HHmmss"); Date date = new Date(); String path = fi.getName(); // 得到去除路径的文件名 String filename = path .substring(path.lastIndexOf("\") + 1); System.out.println(filename); String type = null; if (!"".equals(filename) && filename != null) { int b = (int) (Math.random() * 1000); type = filename.substring(filename.length() - 4, filename.length()); filename = format.format(date) + b + type; // 将文件保存在Web目录的upload文件夹中 if ("pic_1".equals(fi.getFieldName())) { news.setPic_1(fi.getName()); news.setPic_1path(filename); System.out.println(fi.getName()); } else if ("pic_2".equals(fi.getFieldName())) { news.setPic_2(fi.getName()); news.setPic_2path(filename); System.out.println(fi.getName()); } else if ("pic_3".equals(fi.getFieldName())) { news.setPic_3(fi.getName()); news.setPic_3path(filename); System.out.println(fi.getName()); } fi.write(new File(uploadPath, filename)); } } }
  • 相关阅读:
    Oracle分页问题
    win10系统vs2008环境wince项目无法创建问题
    工作满十年了
    让Vs2013 完美支持EF6.1 Code First with Oracle 2015年12月24日更新
    Oracle DMP 操作笔记之根据DMP逆向推导出导出的表空间名称
    【转】如何在 Eclipse 中進行 TFS 的版本管控
    【转】什麼是 Team Explorer Everywhere 2010 ?TFS 專用的 Eclipse 整合套件的安裝與設定
    [转]有关USES_CONVERSION
    [转]使用VC/MFC创建一个线程池
    IT男的”幸福”生活
  • 原文地址:https://www.cnblogs.com/mecca/p/3310950.html
Copyright © 2020-2023  润新知