亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java實現文件上傳的兩種方法(uploadify和Spring)

2024-07-13 10:13:54
字體:
來源:轉載
供稿:網友

最近項目中用到的兩種文件上傳方式做一下總結:

一. uploadify:

uploadify控件的scripts和styles在這里:圖片上傳

JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ include file="../jsp/include/taglibs.jsp"%>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>  <head>  <title>Upload</title>  <script src="<c:url value="/scripts/jquery-1.8.3.min.js"/>" type="text/javascript"></script>  <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/jquery-ui.js" />"></script>  <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/component.js" />"></script>  <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/jquery-validate.js" />"></script>  <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/jquery-form.js" />"></script>  <script type="text/javascript"src="<c:url value="/scripts/jquery-admin/init.js" />"></script>  <script type="text/javascript"src="<c:url value="/scripts/jquery-admin/jquery.ui.datepicker-zh-CN.js" />"></script>  <link rel="stylesheet" href="<c:url value='/styles/admin/admin1.css'/>" rel="external nofollow" >   <link href="<c:url value=" rel="external nofollow" rel="external nofollow" /styles/jquery-ui/jquery-ui.css" />" rel="stylesheet" type="text/css" />  <script src="<c:url value="/scripts/jquery-uploadify/jquery.uploadify.min.js"/>" type="text/javascript"></script>  <link rel="stylesheet" type="text/css" href="<c:url value=" rel="external nofollow" rel="external nofollow" /scripts/jquery-uploadify/uploadify.css"/>">    <style type="text/css">   #jidAttachTable {width:400px;font-size:14px;border:1px solid #d3d3d3;border-left-width:0;border-top-width:0;}   #jidAttachTable td{border: 1px solid #d3d3d3;text-align:left;padding:5px;border-right-width:0;border-bottom-width:0;}   #jidAttachTable .i-i-title{width:450px;}   #jidAttachTable .i-i-content{width:100px;}  </style>   <script type="text/javascript">   $(function(){    //視頻上傳    var uploadVideo = $('#file_upload_video').uploadify({     'buttonText':'上傳視頻',     'multi': false,     'fileTypeDesc': '請選擇wmv視頻文件',     'fileTypeExt': '*.wmv',     'swf'  : '<c:url value="/scripts/jquery-uploadify/uploadify.swf"/>"',     'uploader' : '<c:url value="/uploadAttach.do"/>' ,     'onUploadError': uploadVideoUploadError,     'onUploadSuccess':uploadVideoUploadSuccess    });     function uploadVideoUploadError(){     alert("上傳視頻發生錯誤");    }     function uploadVideoUploadSuccess(file, data, response){     var strs_ = data.split("@");     var videoName_ = strs_[0];     var videoPath_ = strs_[1];      $("#vidioPreview").val("/upload/" + videoPath_);     }        var arrAttach = new Array();     //將現有的附件加載到臨時數組中    var nowAttachIds_ = "${attachs}";     //初始化現有的附件    if(nowAttachIds_ != null && nowAttachIds_ != ""){     var ids_ = nowAttachIds_.split("@") ;     var i = 0;     for( ; i < ids_.length ; i++){      arrAttach.push(ids_[i]);     }    }     //附件上傳    var uploadAttach = $('#file_upload_attach').uploadify({     'buttonText':'上傳附件',     'multi': false,     'swf'  : '<c:url value="/scripts/jquery-uploadify/uploadify.swf"/>"',     'uploader' : '<c:url value="/uploadAttach.do"/>',     'onUploadError': uploadAttachUploadError,     'onUploadSuccess':uploadAttachUploadSuccess    });     function uploadAttachUploadError(){     alert("上傳過程中發生錯誤,您可以嘗試重復上傳一次!")    }     function uploadAttachUploadSuccess(file, data, response){      var strs_ = data.split("@") ;     var documnetId_ = strs_[0];     var fileName_ = strs_[1];      var attach_ = "<tr class=/"jsClassDeleteAttachButtonTR/"> " +       " <td class='i-i-title'>" + fileName_ + "</td> " +       " <td class='i-i-content'><button class=/"jsClassDeleteAttachButton/" dataAttach="+ documnetId_ +">刪除</button></td>" +       " </tr>";      arrAttach.push(documnetId_);     $("#jidAttachTable").append(attach_);    }     $(".jsClassDeleteAttachButton").live("click",function(){      var data_ = $(this).attr("dataAttach");      var i_ = 0;     for(;i_ < arrAttach.length; i_++){      if(data_ == arrAttach[i_]){       arrAttach.splice(i_,1);       break;      }     }     $(this).parent().parent().remove();      //alert(arrAttach)    });   });     var videotag = "";    $(function() {    $("#PreviewDiv").dialog({     title: "視頻預覽",     autoOpen: false,     modal: true,     resizable: false,     position : "center",     width: "489px",     buttons: {      "關閉": function() {       $("#PreviewDiv").dialog("close");       }     }    });     $( "#PreviewDiv" ).on( "dialogopen", function( event, ui ) {     $("#PreviewDiv").html(videotag);    } );     $( "#PreviewDiv" ).on( "dialogclose", function( event, ui ) {     $("#PreviewDiv").html("");    } );   });   var video_root_path = "http://localhost:8080/ProjectTest/";   function openDownloadFrame() {    var _storePreview= video_root_path + $("#vidioPreview").val();    var _embed_head = '<EMBED src=/"';    var _embed_tail = '/" width=/"450/" height=/"400/" type=/"audio/x-wav/" loop=/"false/" autostart=/"true/">' + '</EMBED>';        videotag = _embed_head + _storePreview + _embed_tail;     $("#PreviewDiv").dialog("open");   }  </script>  </head>  <body>  <form:form id="form" name="basedata" modelAttribute="basedata" action="update.do" method="post" >  <div style="height:40px;border:1px solid #ebebeb;padding:10px;">   <div style="width:150px;float:left;">    <input id="file_upload_video" name="file_upload_video" type="file" multiple="true">   </div>   <div style="padding-left:10px;">    <input id="vidioPreview" type="text" name="${bad.attributeStore}" value="${basedata[storeName]}"/>    <input onclick="openDownloadFrame();" type="button" name="button" value="預覽">   </div>  </div>  <div id='divContext' style="height:40px;border:1px solid #ebebeb;padding:10px;">   <div style="width:150px;float:left;">    <input id="file_upload_attach" name="file_upload_attach" type="file" multiple="true">   </div>   <div class="i-attachContainer">    <table id="jidAttachTable">     <c:forEach items="${attachList}" var="attach">      <tr class="jsClassDeleteAttachButtonTR">       <td class='i-i-title'>${attach.name}</td>       <td class='i-i-content'>        <button class="jsClassDeleteAttachButton" dataAttach="${attach.id}">刪除</button>       </td>       </tr>     </c:forEach>    </table>   </div>  </div>  <div id="PreviewDiv">  </div> </form:form> </body> </html> 

后臺Java:

package com.sun.fileUpload;  import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import java.util.Iterator; import java.util.LinkedList; import java.util.List;  import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile;  @Controller public class upload{   // 附件上傳  @RequestMapping("/uploadAttach.do")  public void attachUpload(ModelMap modelMap,HttpServletRequest request ,HttpServletResponse response) throws IOException {    System.out.println("upload file .... start");    String savePath = request.getSession().getServletContext().getRealPath("/") + "upload";    System.out.println("store path is :" + savePath);    File f1 = new File(savePath);    if (!f1.exists()) {    f1.mkdirs();   }    DiskFileItemFactory fac = new DiskFileItemFactory();   ServletFileUpload upload = new ServletFileUpload(fac);   upload.setHeaderEncoding("utf-8");    List<FileItem> fileList = null;   try {    fileList = upload.parseRequest(request);   } catch (FileUploadException ex) {    ex.printStackTrace();    return;   }    Iterator<FileItem> it = fileList.iterator();   String name = "";   System.out.println("deal the files ... start");   //存儲完畢保存進入數據庫   //Document document = null;   while (it.hasNext()) {     FileItem item = it.next();    if (!item.isFormField()) {      name = item.getName();     long size = item.getSize();     String type = item.getContentType();      if (name == null || name.trim().equals("")) {      continue;     }      System.out.println("dealing file info:" + "fileName" + name + " size" + size + " type:" + type);      //擴展名格式:     if (name.lastIndexOf(".") >= 0) {      name.substring(name.lastIndexOf("."));     }      //存文件到磁盤指定路徑 且存儲文件記錄存入數據庫,如果存儲發生故障,數據庫記錄也會創建失敗 /*    document = new Document();     document.setFileType(extName);     document.setFullName(name);     document.setDescription(name);     document.setName(name);     document.setUploadDate(new Date());     document = documentManager.saveWithFileStore(document,item,savePath,extName);*/     System.out.println(new Date() + "persist id :" + name);     File saveFile = new File(savePath + "/" + name);     try {      item.write(saveFile);     } catch (Exception e) {      e.printStackTrace();      throw new RuntimeException(new Date() + "store file error");     }    }   }    System.out.println("deal the files end");   System.out.println("upload file .... end");    response.getWriter().print(name + "@" + name);  } } 

這里把數據庫更新給省略了,有需要可以自己添加。

除上傳外,其他實現功能:
1. 視頻上傳后的預覽功能
2. 視頻是單文件上傳,附件是多文件上傳和刪除

二. Spring默認的上傳功能:
JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ include file="../jsp/include/taglibs.jsp"%>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>  <head>  <title>Upload</title>  <script src="<c:url value="/scripts/jquery-1.8.3.min.js"/>" type="text/javascript"></script>  <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/jquery-ui.js" />"></script>    <link rel="stylesheet" href="<c:url value='/styles/admin/ace.css'/>" rel="external nofollow" >    <style type="text/css">   .file {    position: relative;    display: inline-block;    background: #428BCA;    border: 1px solid #99D3F5;    border-radius: 4px;    padding: 4px 12px;    overflow: hidden;    color: #000000;    text-decoration: none;    text-indent: 0;    line-height: 20px;   }   .file:link {    color: white;    text-decoration:none;   }   .file input {    position: absolute;    font-size: 100px;    right: 0;    top: 0;    opacity: 0;   }   .file:hover {    background: #1B6AAA;    border-color: #78C3F3;    color: white;    text-decoration: none;   }  </style>   </head>  <body>  <form:form id="fileUploadForm" method="post" action="uploadFile.do" name="uploadfile" modelAttribute="uploadfile" enctype="multipart/form-data">   點擊保存后上傳:   <a href="javascript:;" rel="external nofollow" class="file">選擇文件      <input type="file" name="videoFile" id="videoFile">   </a>   <input type="text" style="width:300px;" id="resourceUrl-field" name="resourceUrl" placeholder="資源地址" class="col-sm-12" value="${uploadfile}"/>   <input type="submit" value="保存" class="btn btn-sm btn-primary">  </form:form> </body> </html> 

后臺Java:

package com.sun.fileUpload;  import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import java.util.Iterator; import java.util.LinkedList; import java.util.List;  import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile;  @Controller public class upload{  @RequestMapping(value = "/uploadFile.do")  public String uploadController(HttpServletRequest request,ModelMap modelMap,    @RequestParam("videoFile") MultipartFile videoFile) throws IllegalStateException, IOException{   String savePath = request.getSession().getServletContext().getRealPath("/") + "upload";      try {    uploadSingleFile(savePath, videoFile, request.getSession().getServletContext().getRealPath("/"));   }catch (Exception e) {    return "/upload";   }    modelMap.addAttribute("uploadfile", "upload/" + videoFile.getOriginalFilename());      return "/upload";  }    /**   *   * @param path 這個path 是upload的子目錄路徑 比如 path=/image 最終將下載到[root/upload/image/]目錄下   * @param file   * @return   * @throws java.io.IOException   */  public static String uploadSingleFile(String path, MultipartFile file, String rootPath) {      if (!file.isEmpty()) {         byte[] bytes;     try {      bytes = file.getBytes();           // Create the file on server      File serverFile = new File(path + "/" + file.getOriginalFilename());      BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));      stream.write(bytes);      stream.close();        System.out.println("Server File Location=" + serverFile.getAbsolutePath());       return getRelativePathFromUploadDir(serverFile, rootPath).replaceAll("////", "/");     } catch (IOException e) {      e.printStackTrace();     }       }else{    System.out.println("文件內容為空");   }   return null;   }    /**   *   * @param file   * @return 返回從upload目錄下面的相對路徑   */  public static String getRelativePathFromUploadDir(File file, String rootPath){   if(null==file)    return "";   String absolutePath = file.getAbsolutePath();   if(absolutePath.indexOf(rootPath)!=-1 && rootPath.length()<absolutePath.length())    return absolutePath.substring(absolutePath.indexOf(rootPath)+rootPath.length());   else    return "";  } } 

Spring配置文件springmvc-servlet.xml中添加:

<bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”> <property name=”defaultEncoding” value=”UTF-8″ /> </bean> 

如果和uploadify同時使用的話,需要做一些修改,否則uploadify的上傳文件會被Spring攔截:

 <!-- 支持上傳文件 --> lt;bean id="multipartResolver" class="org.sun.com.MyMultipartResolver">  <!--設置上傳文件的編碼格式,用于解決上傳的文件中文名亂碼問題 -->  <property name="defaultEncoding">   <value>UTF-8</value>  </property> <property name="excludeUrls" value="/uploadAttach.do,/uploadVideo.do"/> lt;/bean> 

org.sun.com.MyMultipartResolver: 

package org.sun.com;  import javax.servlet.http.HttpServletRequest;  import org.springframework.web.multipart.commons.CommonsMultipartResolver;  /**  * @author Sun  */ public class MyMultipartResolver extends CommonsMultipartResolver {  private String excludeUrls;   private String[] excludeUrlArray;    public String getExcludeUrls() {   return excludeUrls;  }   public void setExcludeUrls(String excludeUrls) {   this.excludeUrls = excludeUrls;   this.excludeUrlArray = excludeUrls.split(",");  }   /**   * 這里是處理Multipart http的方法。如果這個返回值為true,那么Multipart http body就會MyMultipartResolver 消耗掉.如果這里返回false   * 那么就會交給后面的自己寫的處理函數處理例如剛才ServletFileUpload 所在的函數   * @see org.springframework.web.multipart.commons.CommonsMultipartResolver#isMultipart(javax.servlet.http.HttpServletRequest)   */  @Override  public boolean isMultipart(HttpServletRequest request) {   for (String url: excludeUrlArray) {    // 這里可以自己換判斷    if (request.getRequestURI().contains(url)) {     return false;    }   }      return super.isMultipart(request);  }   } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女精品成人在线视频| 国产午夜精品全部视频在线播放| 久久精品国产电影| 精品久久久久久中文字幕一区奶水| 亚洲一区二区免费| 日韩免费视频在线观看| 国产成人精彩在线视频九色| 午夜精品久久久久久久99热| 日韩精品福利在线| 2019av中文字幕| 亚洲精品第一页| 久久久久久久久久久免费精品| 久久久久亚洲精品国产| 在线国产精品播放| 久久亚洲国产成人| 自拍偷拍亚洲精品| 精品爽片免费看久久| 久久影视电视剧免费网站| 色噜噜狠狠狠综合曰曰曰88av| 国产成人精品av| 成人h视频在线观看播放| 91久久精品视频| 91精品久久久久久久久久久久久久| 亚洲专区中文字幕| 国产一区二区日韩精品欧美精品| 亚洲乱码一区二区| 国产91精品久久久久| 琪琪第一精品导航| 91爱视频在线| 热久久美女精品天天吊色| 亚洲色图综合网| 色yeye香蕉凹凸一区二区av| 亚洲天堂av在线播放| 成人在线视频网| 亚洲国产精彩中文乱码av| 一区二区三区亚洲| 国产精品自产拍高潮在线观看| 午夜剧场成人观在线视频免费观看| 久久视频在线免费观看| 狠狠综合久久av一区二区小说| 91免费版网站入口| 欧美精品一本久久男人的天堂| 欧洲亚洲免费在线| 欧美在线观看网址综合| 大伊人狠狠躁夜夜躁av一区| 欧美精品在线观看91| 日本19禁啪啪免费观看www| 欧美人在线视频| 国产精品一区二区三区免费视频| 红桃视频成人在线观看| 日韩在线激情视频| 91夜夜未满十八勿入爽爽影院| 中日韩美女免费视频网站在线观看| 91久久在线播放| 日韩美女毛茸茸| 91情侣偷在线精品国产| 国产精品99久久久久久人| 久久五月天色综合| 国产亚洲人成a一在线v站| 亚洲天堂精品在线| 成人亚洲综合色就1024| 中文字幕在线看视频国产欧美| 欧洲成人午夜免费大片| 国产91在线播放| 亚洲一区中文字幕| 国产精品视频资源| 日韩av在线一区| 亚洲成人黄色网址| 亚洲片国产一区一级在线观看| 国产成人精品在线观看| 国产剧情日韩欧美| 亚洲人a成www在线影院| 亚洲欧美国产日韩天堂区| 亚洲奶大毛多的老太婆| 国产成人欧美在线观看| 精品久久久一区二区| 欧美另类极品videosbestfree| 日韩av影院在线观看| 久久影视电视剧免费网站清宫辞电视| 欧美午夜www高清视频| 国产91精品久| 日韩精品中文在线观看| 亚洲国产精品久久久久久| 亚洲一区二区三区视频播放| 国产在线精品播放| 亚洲精品成人久久| 欧美成人一区二区三区电影| www.久久久久久.com| 欧美国产日韩一区二区三区| 亚洲精品小视频| 亚洲v日韩v综合v精品v| 久久国产精品视频| 日韩免费在线视频| 国产精品一香蕉国产线看观看| 日韩在线视频线视频免费网站| 亚洲理论片在线观看| 欧美极品少妇xxxxⅹ喷水| 久久久久久久久久久久久久久久久久av| 亚洲色图五月天| 欧美日韩免费区域视频在线观看| 亚洲欧美在线x视频| 国产精品久久久久久久久免费看| 国产精品永久免费观看| 北条麻妃99精品青青久久| 国产成人综合一区二区三区| 欧美国产视频日韩| 亚洲国产精品久久久久久| 精品呦交小u女在线| 国产美女搞久久| 影音先锋欧美在线资源| 国模叶桐国产精品一区| 精品久久在线播放| 成人黄色在线免费| 久久久久九九九九| …久久精品99久久香蕉国产| 美女扒开尿口让男人操亚洲视频网站| 精品成人69xx.xyz| 91国产高清在线| 97人人爽人人喊人人模波多| 欧美大片免费观看| 成人a级免费视频| 精品久久久国产精品999| 黑人狂躁日本妞一区二区三区| 亚洲最大的成人网| 欧美人成在线视频| 欧美一级高清免费播放| 久热国产精品视频| 亚洲一区二区久久| 久久久在线免费观看| 国产精品久久久久久久av电影| 成人激情视频网| 欧美肥臀大乳一区二区免费视频| 欧美精品www在线观看| 亚洲成人久久网| 日本免费久久高清视频| 国产91对白在线播放| 在线午夜精品自拍| 国产精品久久久久久久美男| 国产精品自产拍在线观看中文| 91亚洲永久免费精品| 精品动漫一区二区| 91av视频导航| 国产亚洲在线播放| 中文字幕综合一区| 亚洲美女性视频| 久久精品视频网站| 在线性视频日韩欧美| 精品久久香蕉国产线看观看gif| 欧美xxxx14xxxxx性爽| 国产精品91久久久| 欧美一级视频一区二区| 欧美理论电影在线观看| 日韩美女视频免费在线观看| 亚洲国产精品va在线看黑人动漫| 91日本在线观看| 国产mv免费观看入口亚洲| 精品久久久久人成| 亚洲精品福利免费在线观看| 欧美性猛交xxxx乱大交| 国产精品欧美日韩久久| 欧美精品情趣视频| 777国产偷窥盗摄精品视频| 亚洲欧美一区二区三区情侣bbw| 日韩精品免费一线在线观看|