zoukankan      html  css  js  c++  java
  • 工作中碰到uploadify插件两个版本:HTML5和Flash

                 最近工作中碰到上传文件插件使用问题:在工作中碰到app嵌套html5页面中使用上传文件问题,因为之前使用的是stream上传插件(http://www.twinkling.cn/),但是该插件跨域传输出现问题,无法传输成功,经过几次调试都无法解决跨域,然后我就换了个插件uploadify,一开始用的flash版本,但是此版本不支持在app中使用,于是就想到了用html5版本的,感觉笨死了,这个问题整了时间有点长了,下面开始说html版本的使用

                 首先,页面代码:

       

    后台代码:

      

    @SuppressWarnings({ "unchecked", "rawtypes" })

        protected void doGet(HttpServletRequest request,

                HttpServletResponse response) throws ServletException, IOException {

            // 获得参数

            String timestamp = request.getParameter("timestamp");

            String token = request.getParameter("token");

            System.out.println(timestamp);

            System.out.println(token);

            // 获得文件

            String savePath = this.getServletConfig().getServletContext()

                    .getRealPath("");

            savePath = savePath + "/uploads/";

            File f1 = new File(savePath);

            

            System.out.println(savePath);

            

            if (!f1.exists()) {

                f1.mkdirs();

            }

            DiskFileItemFactory fac = new DiskFileItemFactory();

            ServletFileUpload upload = new ServletFileUpload(fac);

            upload.setHeaderEncoding("utf-8");

            List fileList = null;

            try {

                fileList = upload.parseRequest(request);

            } catch (FileUploadException ex) {

                System.out.println(ex.getMessage());

                return;

            }

            

            Iterator<FileItem> it = fileList.iterator();

            String name = "";

            String extName = "";

            while (it.hasNext()) {

                FileItem item = it.next();

                if (!item.isFormField()) {

                    name = item.getName();

                    long size = item.getSize();

                    String type = item.getContentType();

                    System.out.println(size + " " + type);

                    if (name == null || name.trim().equals("")) {

                        continue;

                    }

     

                    // 扩展名格式:

                    if (name.lastIndexOf(".") >= 0) {

                        extName = name.substring(name.lastIndexOf("."));

                    }

     

                    File file = null;

                    name = UUID.randomUUID().toString();

                    do {

                        // 生成文件名:

                        name = UUID.randomUUID().toString();

                        file = new File(savePath + name + extName);

                    } while (file.exists());

                    File saveFile = new File(savePath + name + extName);

                    try {

                        item.write(saveFile);

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                }

            }

            response.getWriter().print(name + extName);

        }

    解决跨域问题主要是

                       第一:在web.xml中配置

                                  <!-- 解决uploadify插件跨域 -->

                        <filter>  

                              <filter-name>cors</filter-name>  

                              <filter-class>cn.qtone.eduoa.web.filter.SimpleCORSFilter</filter-class>  

                        </filter>  

                        <filter-mapping>  

                              <filter-name>cors</filter-name>  

                              <url-pattern>/*</url-pattern>  

                        </filter-mapping> 

                        <!-- 解决uploadify插件跨域 -->

     

     

                 第二:写过滤器SimpleCORSFilter

      

                   

     

        

  • 相关阅读:
    Hibernate之onetoone单向外键关联Annotation
    Server2008IIS7设置引用http://www.cnblogs.com/goldnet/archive/2008/07/11/1240685.html
    wcf exceptionaction
    性能测试中考虑时间(Thinking Time)的计算方法 http://developer.51cto.com/art/200807/87478.htm
    字节流的比较
    MemorySteam读取的问题Seek方法
    C# 参考之方法参数关键字:params、ref及out 引用http://www.cnblogs.com/hunts/archive/2007/01/13/619620.html
    Equal使用的注意点
    assembly load and unload
    CreateInstance数组传递
  • 原文地址:https://www.cnblogs.com/yunshaowei/p/11968091.html
Copyright © 2011-2022 走看看