我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java实现文件上传的方法有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java实现文件上传的方法有哪些

这篇文章给大家分享的是有关Java实现文件上传的方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一. 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 class="lazy" data-src="<c:url value="/scripts/jquery-1.8.3.min.js"/>" type="text/javascript"></script>  <script type="text/javascript" class="lazy" data-src="<c:url value="/scripts/jquery-admin/jquery-ui.js" />"></script>  <script type="text/javascript" class="lazy" data-src="<c:url value="/scripts/jquery-admin/component.js" />"></script>  <script type="text/javascript" class="lazy" data-src="<c:url value="/scripts/jquery-admin/jquery-validate.js" />"></script>  <script type="text/javascript" class="lazy" data-src="<c:url value="/scripts/jquery-admin/jquery-form.js" />"></script>  <script type="text/javascript"class="lazy" data-src="<c:url value="/scripts/jquery-admin/init.js" />"></script>  <script type="text/javascript"class="lazy" data-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 class="lazy" data-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 class="lazy" data-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 >   <div >    <input id="file_upload_video" name="file_upload_video" type="file" multiple="true">   </div>   <div >    <input id="vidioPreview" type="text" name="${bad.attributeStore}" value="${basedata[storeName]}"/>    <input onclick="openDownloadFrame();" type="button" name="button" value="预览">   </div>  </div>  <div id='divContext' >   <div >    <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("."));     }      //存文件到磁盘指定路径 且存储文件记录存入数据库,如果存储发生故障,数据库记录也会创建失败      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 class="lazy" data-src="<c:url value="/scripts/jquery-1.8.3.min.js"/>" type="text/javascript"></script>  <script type="text/javascript" class="lazy" data-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"  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";  }      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;   }      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;   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(",");  }     @Override  public boolean isMultipart(HttpServletRequest request) {   for (String url: excludeUrlArray) {    // 这里可以自己换判断    if (request.getRequestURI().contains(url)) {     return false;    }   }      return super.isMultipart(request);  }   }

感谢各位的阅读!关于“Java实现文件上传的方法有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java实现文件上传的方法有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java实现文件上传的方法有哪些

这篇文章给大家分享的是有关Java实现文件上传的方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一. uploadify:uploadify控件的scripts和styles在这里:图片上传JSP:<%@
2023-05-30

asp文件上传的方法有哪些

1. 使用HTML表单上传文件:可以通过HTML表单中的元素实现文件上传,用户选择文件后,文件会被上传到服务器。2. 使用ASP自带的文件上传组件:ASP自带的文件上传组件是Server对象的一部分,可以使用Server.CreateObj
2023-06-13

Java中文件上传的方式有哪些

本文小编为大家详细介绍“Java中文件上传的方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中文件上传的方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。请求类型单文件上传 //上传
2023-07-02

Java实现文件上传的方法总结

这篇文章主要为大家介绍了三种Java实现文件上传的方法,文中的示例代码讲解详细,对我们的学习或工作有一定的借鉴价值,感兴趣的可以了解一下
2023-05-15

java实现操作文件的方法有哪些

这篇文章将为大家详细讲解有关java实现操作文件的方法有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java7中文件IO发生了很大的变化,专门引入了很多新的类:import java.
2023-05-31

java文件上传的实现方法是什么

Java文件上传的实现方法有多种,以下是其中几种常见的方法:1. 使用Servlet API:通过HttpServletRequest的getPart()方法获取上传的文件,然后使用InputStream将文件保存到服务器上的指定路径。示例
2023-09-05

Java上传图片的方法有哪些

在Java中,有多种方法可以上传图片:1. 使用基本的Java IO类库:可以使用FileInputStream类来读取图片文件,并使用OutputStream类将文件写入服务器或其他存储位置。2. 使用Apache的Commons Fil
2023-08-20

Servlet3.0实现文件上传的方法

Servlet 实现文件上传所谓文件上传就是将本地的文件发送到服务器中保存。例如我们向百度网盘中上传本地的资源或者我们将写好的博客上传到服务器等等就是典型的文件上传。Servlet 3.0上次完成文件下载功能使用的是 Servlet 2.5
2023-05-31

java文件传输方式有哪些

Java文件传输方式有以下几种:1. 使用Java socket编程:可以通过建立服务器和客户端之间的Socket连接来传输文件。服务器端将文件内容转化为字节流,通过Socket连接发送给客户端,客户端接收字节流并将其转化为文件保存。2.
2023-08-31

在Java项目中实现文件上传的方法

在Java项目中实现文件上传的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.jspsmartupload这个组件用起来是挺方便的,不过就是只适合小文件上传,如果大文件上
2023-05-31

windows到linux上传文件的方式有哪些

这篇文章主要介绍windows到linux上传文件的方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!lrzsz方式上传文件首先安装lrzsz包[root@localhost ~]# yum install -
2023-06-27

java实现文件下载的方式有哪些

在Java中,可以使用以下方式实现文件下载:使用URL和URLConnection类:可以通过创建URL对象,然后打开连接并获取输入流,将输入流写入输出流实现文件下载。URL url = new URL(fileUrl);HttpURLC
java实现文件下载的方式有哪些
2024-04-08

Android实现上传文件功能的方法

本文所述为一个Android上传文件的源代码,每一步实现过程都备有详尽的注释,思路比较清楚,学习了本例所述上传文件代码之后,你可以应对其它格式文件的上传。实例中主要实现上传文件至Server的方法,允许Input、Output,不使用Cac
2022-06-06

jsp 实现上传文件的两种方法

在用Java开发企业器系统的使用,特别是涉及到与办公相关的软件开发的时候,文件的上传是客户经常要提到的要求.因此有 一套很好文件上传的解决办法也能方便大家在这一块的开发.........[@more@]在用Java开发企业器系统的使用,特别
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录