zoukankan      html  css  js  c++  java
  • 文件上传

    jsp页面


    <tr>
           <td colspan="3" class=" xyz-field-collapse">
              <div>
                   <div class="uploadPanel">
                         <a href="#" id="attachAddLink" class="underline-link attach-add">添加附件</a>
                         <div id="attachFile">
                              <input id="attachFileInfo" name="attachFileInfo" type="file"/>
                         </div>

                         <!-- 上传文件游览列表  -->
                         <ul id="attach_upload_list" style="max-height:150px; overflow-y:auto;"></ul>
                  </div>
             </div>
         </td>
         <td style="text-align: right;">

             <!-- 上传按钮 -->
             <div id="attachContractDlgForm_btnUpload" />
        </td>
    </tr>

    js(基于Extjs的文件上传)


    //获取文件名
    var getFileName = function(str){
          var reg = /[^\/]*[\/]+/g;
          var str = str.replace(reg, '');
          return str;
    };
    //文件上传
    var uploadFile = function(fileName){
        Ext.Ajax.service({
            url : SERVICE.UPLOAD_FILE_URL,
            jsonData : {},
            success : function(jsonSrc){
                var data = jsonSrc.getData();
                    if(data.retCode == '-1') {
                        Ext.MessageBox.alert("提示", "添加附件失败,原因:" + data.msg);
                    } else {
                        var attachDTO = data.dto;
                        addAttachMap(attachDTO);
                        appendAttachLink(attachDTO);
                    }
                       fileField.reset();
                },
                failure : function(jsonSrc) {
                    Ext.MessageBox.alert("提示", "添加附件失败,原因:" + jsonSrc.getMessage());
                },
                params :{
                    fileName : fileName,
                    attachType : attachTypeCombox.getValue()
                },
                form : "attachContractDlgForm",
                isUpload : true
            });
        };
    //添加map
        var addAttachMap = function(attachDTO){
            var key = attachDTO.fileId;
            attachMap.add(key, attachDTO);
        };
        
         //添加附件列表节点
        var appendAttachLink = function (attachDTO) {
            var fileSize = attachDTO.fileSize;
            var tpl = new Ext.Template(
                    '<li fileId="{fileId}">',
                    '<span >' + attachDTO.fileName + ' (' + fileSize + ')' + '</span>',
                    '<a href="#" class="del-link">删除 </a>',
                    '</li>');
            tpl.append('attach_upload_list', attachDTO);
            Ext.select("#attach_upload_list li[fileId=" + attachDTO.fileId
                 + "] > a.del-link").on("click", delAttachEvent);
            Ext.get("attach_upload_list").addClass(uploadBorderCls);
        };
    struts2中的Action代码:
    byte
    [] fileByteData = null; InputStream in = null; ByteArrayOutputStream out = new ByteArrayOutputStream(); try { in = attachFileInfo.getInputStream(); byte[] buff = new byte[1024]; int len = 0; while((len = in.read(buff, 0 ,100)) != -1){ out.write(buff, 0, len); } fileByteData = out.toByteArray(); //获取内存缓冲中的数据 } catch (Exception e) { map.put("retCode", "-1"); map.put("msg", e.getMessage()); e.printStackTrace(); return map; }finally{ if(out != null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if(in != null){ try { in.close(); } catch (IOException e) { e.printStackTrace(); } } }
            FileOutputStream fos = null;
            BufferedOutputStream bos = null;
            try {
    //根据文名,获取文件的格式

                 String fileName = dto.getFileName();
                 int index = fileName.lastIndexOf(".");
                 if(index > 0){
                    String fileType = fileName.substring(index+1);
                    dto.setFileFormat(fileType);
                 }

                //设置文件的大小
                Double fileSizeKB = fileSize / 1024.0;
                DecimalFormat df = new DecimalFormat("########0.00");    //格式化数据
                String fileSizeStr = df.format(fileSizeKB);
                dto.setFileSize(fileSizeStr + "KB");          

                  Date today = new Date();
                  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
                  String todayStr = dateFormat.format(today);
                  //设置当前日期为相对路径
                  dto.setRelUrl(todayStr);

                DmStdTrInstrAttachDTO tempDTO = dmStdTrInstrAttachCtrl.addContractDmAttachMgr(sessionId, dto);
    

                 //获取文件保存路径
                 String path = this.getSysPath(sessionId);
                 String fileFullPath = path + todayStr + "/" + tempDTO.getFileName();

                File file = new File(fileFullPath);
    //文件不存在就创建文件
    if(file!= null && !file.exists()){ new File(file.getParent()).mkdirs(); file.createNewFile(); } fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); //向文件写入数据 bos.write(fileByteData); bos.close(); fos.close(); return tempDTO; } catch (Exception e) { e.printStackTrace(); throw new ShineException(e.getMessage()); }finally{ if(fos != null) try { fos.close(); } catch (IOException e) { e.printStackTrace(); } if(bos != null) try { bos.close(); } catch (IOException e) { e.printStackTrace(); } }

     

  • 相关阅读:
    21.Android之SQLite数据库学习
    20.(转)Android的样式(Style)和主题(Theme)
    19.Android之文件存储方法学习
    18.Android之SharedPreferences数据存储学习
    17.(转) Android之四大基本组件介绍与生命周期
    16.(转) Android之Support v4、v7、v13的区别和应用场景
    15.Android中LinearLayout布局一些小记录
    14.Android之Layout布局学习
    13. (转) Android一些布局属性详解
    12.Android之Tabhost组件学习
  • 原文地址:https://www.cnblogs.com/hongwz/p/5323097.html
Copyright © 2011-2022 走看看