- 浏览: 82349 次
- 性别:
- 来自: 苏州
-
文章分类
- 全部博客 (80)
- java (20)
- java 日志 (1)
- 网络应用 (1)
- 算法 (3)
- struts (2)
- 线程 (2)
- 数据库 (1)
- tools (1)
- lunix (8)
- Android (4)
- Nutch原理 (1)
- 字符编码 (1)
- 框架 (3)
- spring (7)
- Oracle (2)
- 数据连接池 (3)
- solr (3)
- 思想 (2)
- 架构设计 (1)
- 缓存 (2)
- hibernate (1)
- 学习 (1)
- java,jvm (1)
- 分页插件 (1)
- javascript (1)
- nginx (2)
- svn (2)
- 内存 (3)
- sqlserver (1)
- UML (1)
- JS 跨域 (1)
- mybatis (1)
- 加密 (0)
最新评论
-
q15106202446:
不知不觉 这些都有所了解了!时间过的好快..该进攻系统架构了
学习(转) -
zkq-java:
zkq-java 写道[u][/u]引用[i][/i][*][ ...
Solr 创建索引的原理 源码分析 -
zkq-java:
[u][/u]引用[i][/i][*][img][/img][ ...
Solr 创建索引的原理 源码分析
spring支持在网络应用程序处理文件上传,提供拔插的org.springframework.web.multipart.MultipartResolver对象 。
在写上传文件的前提下需提供两个jar包:
1.添加上传拦截,可指定上传的大小
- <!-- 上传拦截,如最大上传值及最小上传值 -->
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <!-- one of the properties available; the maximum file size in bytes -->
- <property name="maxUploadSize" value="100000" />
- </bean>
<!-- 上传拦截,如最大上传值及最小上传值 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- one of the properties available; the maximum file size in bytes --> <property name="maxUploadSize" value="100000" /> </bean>
2.添加java后台处理的API
- @RequestMapping(value = "/form", method = RequestMethod.POST)
- public String handleFormUpload(@RequestParam("name") String name,
- @RequestParam("file") MultipartFile file) {
- if (!file.isEmpty()) {
- byte[] bytes = file.getBytes();
- // 去理上传写文件代码
- }
@RequestMapping(value = "/form", method = RequestMethod.POST) public String handleFormUpload(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) { if (!file.isEmpty()) { byte[] bytes = file.getBytes(); // 去理上传写文件代码 }
具体文件
spring_mvc.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
- <!-- 注解资源扫描包路径 -->
- <context:component-scan base-package="org.spring.mvc" />
- <bean
- class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
- <bean
- class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
- <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析-->
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="viewClass"
- value="org.springframework.web.servlet.view.JstlView" />
- <property name="prefix" value="/" /><!-- 跳转页面的前缀路径 如 /web-inf/user/ -->
- <property name="suffix" value=".jsp"></property><!-- 跳转页面后缀 如 helloWorld.jsp-->
- </bean>
- <!-- 上传拦截,如最大上传值及最小上传值 -->
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <!-- one of the properties available; the maximum file size in bytes -->
- <property name="maxUploadSize" value="100000" />
- </bean>
- </beans>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 注解资源扫描包路径 --> <context:component-scan base-package="org.spring.mvc" /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/" /><!-- 跳转页面的前缀路径 如 /web-inf/user/ --> <property name="suffix" value=".jsp"></property><!-- 跳转页面后缀 如 helloWorld.jsp--> </bean> <!-- 上传拦截,如最大上传值及最小上传值 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- one of the properties available; the maximum file size in bytes --> <property name="maxUploadSize" value="100000" /> </bean> </beans>
FileUploadController.java文件
- package org.spring.mvc.upload;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.List;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.spring.mvc.HelloWorldController;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.multipart.MultipartFile;
- import org.springframework.web.multipart.MultipartHttpServletRequest;
- /**
- * 上传文件
- * @author chenyw
- *
- */
- @Controller
- @RequestMapping(value = "/toFileUpload")
- public class FileUploadController {
- private Logger logger = LoggerFactory.getLogger(HelloWorldController.class);
- /**
- * 单文件上传
- * @param name @RequestParam 取得name字段的值
- * @param file 文件
- * @return
- * @throws IOException
- */
- @RequestMapping(value = "/oneFileUpload", method = RequestMethod.POST)
- public String handleFormUpload(@RequestParam("name")
- String name, @RequestParam("file")
- MultipartFile file) throws IOException {
- logger.info("name:"+name);
- logger.info("上传文件:"+file.getOriginalFilename());
- if (!file.isEmpty()) {
- this.copyFile(file.getInputStream(), file.getOriginalFilename());
- }
- return "fileUpload/success";
- }
- /**
- * 多文件上传
- * @param request
- * @param name
- * @return
- * @throws Exception
- */
- @RequestMapping(value = "/multipartFileUpload",method = RequestMethod.POST)
- public String upload2(
- MultipartHttpServletRequest request ,
- @RequestParam("name") String name // 页面上的控件值
- ) throws Exception {
- List<MultipartFile> files = request.getFiles("file");
- for( int i=0; i<files.size() ;i++){
- if(! files.get(i).isEmpty()) {
- logger.info("上传文件:"+files.get(i).getOriginalFilename());
- this.copyFile(files.get(i).getInputStream(), files.get(i).getOriginalFilename());
- }
- }
- logger.info("success");
- return "fileUpload/success";
- }
- /**
- * 写文件到本地
- * @param in
- * @param fileName
- * @throws IOException
- */
- private void copyFile(InputStream in,String fileName) throws IOException{
- FileOutputStream fs = new FileOutputStream("d:/upload/"
- + fileName);
- byte[] buffer = new byte[1024 * 1024];
- int bytesum = 0;
- int byteread = 0;
- while ((byteread = in.read(buffer)) != -1) {
- bytesum += byteread;
- fs.write(buffer, 0, byteread);
- fs.flush();
- }
- fs.close();
- in.close();
- }
- }
package org.spring.mvc.upload; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spring.mvc.HelloWorldController; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; /** * 上传文件 * @author chenyw * */ @Controller @RequestMapping(value = "/toFileUpload") public class FileUploadController { private Logger logger = LoggerFactory.getLogger(HelloWorldController.class); /** * 单文件上传 * @param name @RequestParam 取得name字段的值 * @param file 文件 * @return * @throws IOException */ @RequestMapping(value = "/oneFileUpload", method = RequestMethod.POST) public String handleFormUpload(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) throws IOException { logger.info("name:"+name); logger.info("上传文件:"+file.getOriginalFilename()); if (!file.isEmpty()) { this.copyFile(file.getInputStream(), file.getOriginalFilename()); } return "fileUpload/success"; } /** * 多文件上传 * @param request * @param name * @return * @throws Exception */ @RequestMapping(value = "/multipartFileUpload",method = RequestMethod.POST) public String upload2( MultipartHttpServletRequest request , @RequestParam("name") String name // 页面上的控件值 ) throws Exception { List<MultipartFile> files = request.getFiles("file"); for( int i=0; i<files.size() ;i++){ if(! files.get(i).isEmpty()) { logger.info("上传文件:"+files.get(i).getOriginalFilename()); this.copyFile(files.get(i).getInputStream(), files.get(i).getOriginalFilename()); } } logger.info("success"); return "fileUpload/success"; } /** * 写文件到本地 * @param in * @param fileName * @throws IOException */ private void copyFile(InputStream in,String fileName) throws IOException{ FileOutputStream fs = new FileOutputStream("d:/upload/" + fileName); byte[] buffer = new byte[1024 * 1024]; int bytesum = 0; int byteread = 0; while ((byteread = in.read(buffer)) != -1) { bytesum += byteread; fs.write(buffer, 0, byteread); fs.flush(); } fs.close(); in.close(); } }
单文件上传页面oneFileUpload.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>My JSP 'oneFileUpload.jsp' starting page</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css">
- -->
- </head>
- <body>
- This is my onefileUpload page. <br>
- <form method="POST" action="toFileUpload/oneFileUpload" enctype="multipart/form-data">
- <input type="text" name="name"/>
- <input type="file" name="file"/>
- <input type="submit"/>
- </form>
- </body>
- </html>
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'oneFileUpload.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> This is my onefileUpload page. <br> <form method="POST" action="toFileUpload/oneFileUpload" enctype="multipart/form-data"> <input type="text" name="name"/> <input type="file" name="file"/> <input type="submit"/> </form> </body> </html>
多文件上传页面multipartFileUpload.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>My JSP 'multipartFileUpload.jsp' starting page</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css">
- -->
- </head>
- <body>
- This is multipartFileUpload page. <br>
- <form method="POST" action="toFileUpload/multipartFileUpload" enctype="multipart/form-data">
- <input type="text" name="name"/><br>
- <input type="file" name="file"/><br>
- <input type="file" name="file"/><br>
- <input type="submit"/><br>
- </form>
- </body>
- </html>
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'multipartFileUpload.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> This is multipartFileUpload page. <br> <form method="POST" action="toFileUpload/multipartFileUpload" enctype="multipart/form-data"> <input type="text" name="name"/><br> <input type="file" name="file"/><br> <input type="file" name="file"/><br> <input type="submit"/><br> </form> </body> </html>
发表评论
-
spring中的定时器功能
2013-03-21 13:45 743本文为抄袭,仅为保存资源 spring的定时器功能,它不仅 ... -
深度解析Java内存的原型及工作原理
2013-02-17 10:21 668本文主要通过分析Java内存分配的栈、堆以以及常量池详细的讲 ... -
Java文件上传组件 common-fileUpload 使用教程
2012-05-25 15:26 3475最近项目中,在发布商品的时候要用到商品图片上传功能(网站前 ... -
究 Spring 3.1之无web.xml式 基于代码配置的servlet3.0应用(转)
2012-05-22 16:18 4110大家应该都已经知道Spring 3.1对无web.xml式 ... -
探 Spring 3.1之无web.xml式 基于代码配置的servlet3.0应用(转)
2012-05-22 16:09 3109探 Spring 3.1之无web.xml式 基于代码 ... -
java面试经典(转)
2012-05-15 16:31 459http://blog.csdn.net/aweijun360 ... -
Servlet 3.0 简介
2012-05-08 15:28 1133Java servlets 是一项被普 ... -
Spring MVC国际化配置(转)
2012-04-20 15:41 1082一、基于浏览器语言的国际化配置 使用Spring的MVC,并且 ... -
java入门基础(一)
2012-04-05 08:19 694java 的核心思想 ... -
spring 源码解析(一) 转
2012-03-23 14:31 798在认真学习Rod.Johnson的三部曲之一:<&l ... -
spring 加载资源文件(转)
2012-03-22 09:01 888spring 加载资源文件 在Spring 中可以使用以 ... -
hibernate与ibatis的区别
2012-03-07 09:05 890hibernate 是一站式ORM orm mappin ... -
Servlet 3.0 新特性概览
2012-01-20 17:01 893转自http://blog.csdn.net/xiazdo ... -
配置文件load的几种方法(转)
2012-01-20 11:22 8361. InputStreamResource(Input ... -
Java关键字
2012-01-20 10:16 784Java关键字(keywords) abstract ... -
读源码之重拾接口与继承
2012-01-19 15:41 721Java抽象类和接口的区别(好长时间没看这种文章了) ... -
java 基础 集合
2012-01-18 11:09 862ArrayList和LinkedList, Ar ... -
HttpUrlContent 详解
2012-01-18 08:45 978下边的总结对我帮助蛮大的~不仅用法了解,整个连接流程也要明 ... -
SAXReader解析XML
2012-01-18 08:43 3198总结: Document document=new SA ... -
threadlocal
2012-01-17 11:28 756概述 我们知道Spring通 ...
相关推荐
法国Embouchure地区沉积物岩性数据集 内容 该数据集由O. Puertas在2014年发布,详细记录了法国Embouchure地区的EMBOU岩芯沉积物的岩性特征。数据集中包含了39个数据点,提供了关于该地区沉积环境的重要信息。欲了解更多信息,请访问"PANGAEA数据库中的原始数据" ()。
BH1750光照强度传感器
基于多目标粒子群算法的分布式电源选址定容与优化配置研究——基于MATLAB的程序实践与优化探讨,基于多目标粒子群算法的分布式电源选址定容与优化配置MATLAB程序:含规划模型、算法求解及参考文章赠阅,分布式电源选址定容与优化配置MATLAB程序基于多目标粒子群算法 (1)该程序为基于多目标粒子群算法的分布式电源优化配置与选址定容程序,期刊lunwen源程序,配有该lunwen。 (2)本程序可有效配置分布式电源容量与安装位置。程序与lunwen包含的内容有综合成本、网损、电压稳定裕度为目标函数建立分布式电源的规划模型、多目标粒子群算法、IEEE-69节点的算例求解。 (3)赠送若干极为相似的参考lunwen,均为本人研究该课题期间认为非常系统、全面、易懂、基础的文章。 ,1. 多目标粒子群算法; 2. 分布式电源优化配置; 3. 分布式电源选址定容; 4. MATLAB程序; 5. 综合成本; 6. 网损; 7. 电压稳定裕度; 8. IEEE-69节点; 9. 参考lunwen(或相关文章),基于多目标粒子群算法的分布式电源选址定容与优化配置MATLAB程序:成本、网损与电压稳定的综
sediment core GeoB17620-1的文档记录 内容 Lucchi, RG; Sabbatini, A; Nicolaisen, LS 等(2014年)提供的sediment core GeoB17620-1的文档记录。详细信息请访问"此链接" ()以获取完整的数据集文档和相关信息。请注意,文档的具体大小未知。
该项目是一款多语言心理咨询网站前端开发设计源码,包含7166个文件,涵盖2646个PHP文件、1419个JavaScript文件、650个GIF文件、417个HTML文件、318个PNG文件、263个LESS文件、236个Vue文件、219个JSON文件、183个Markdown文件、142个文本文件。主要采用JavaScript进行开发,同时融入PHP、TypeScript、Shell等多种语言技术。这套源码旨在提供全面的心理咨询服务网站界面设计。
显微镜下染色体图像分割系统:新手入门宝典
物品识别与分类系统源码和数据集:改进yolo11-HWD
【C#】Grpc扩展是一个基于GRPC的简单微服务框架
【GO】基于go实现的生日提醒定时任务
深海沉积物岩芯GeoB17624-3的文档记录 内容 Lucchi, RG; Sabbatini, A; Nicolaisen, LS 等(2014)提供的文档包括了对深海沉积物岩芯GeoB17624-3的研究资料。该研究的具体数据集大小未知,但已通过PANGAEA数据库发布,可供进一步学术研究和参考。可通过以下链接访问完整数据集:"" ()。
外科工具实例分割系统源码和数据集:改进yolo11-convnextv2
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
AI人脸识别学习,使用opencv2
内容概要:本通知介绍了西安邮电大学将举办的2024年第29届“21世纪杯”全国大学生英语演讲比赛的具体情况。活动目的是提升学生讲好中国故事的能力,促进文化交流与构建人类命运共同体。此次活动的主题是传统文化的复兴。主要内容涵盖比赛的背景介绍、参赛对象限定以及具体报名方式及时间节点。此外还详细讲解了演讲主题及视频上传的要求。评分标准从内容质量、语言表述、整体表现等方面进行了明确规定。获奖学生不仅将得到相应的表彰奖励,还有可能代表西安邮电大学参与到更高层级的比赛当中去。 适合人群:全体在校本科生,尤其是对外语学习感兴趣的师生;以及对于传统文化复兴有兴趣的年轻人。 使用场景及目标:此活动鼓励学生积极参与英语演讲竞技,提高自己的英语表达能力和综合素质,同时也有助于推广中国传统优秀文化传播。 其他说明:研究生(青年组)需要直接通过官网报名并且不受本次比赛限制;此外,该次比赛的成绩还将影响其他英语演讲系列竞赛的表现评估体系。未尽事宜将在日后进一步发布。
该项目是一款采用Java编写的自然管理后台设计源码,包含共计126个文件,涵盖95个Java源代码文件、18个XML配置文件、5个YAML文件、4个Git忽略文件、4个属性文件以及其他类型文件。此系统专注于后台管理功能,适用于各种管理场景。
太阳能光伏面板分割系统:基础知识铺垫
光伏混合储能直流微网中基于PI控制的直流母线电压下垂控制模型研究与应用,光伏混合储能直流微网中基于PI控制的直流母线电压下垂控制模型研究与应用,光伏混合储能直流微网直流母线电压下垂控制控制模型 在基于储能单元SOC的下垂控制方法基础上,下垂系数不断变化,通过加入PI二次控制,将控制器输出量与储能单元变器输出电压和母线电压稳定值相叠加,对母线电压的跌落和和上升进行补偿和抑制。 效果明显 也可以改mppt控制方法或者改局部遮阴 ,光伏混合储能、直流微网、下垂控制、PI二次控制; SOC下垂控制方法; 电压稳定性提升; MPPT控制方法调整。,光伏混合储能直流微网电压控制模型:动态下垂系数与PI二次控制
STM32+MPU6050+OLED
手指五指图像分割系统:50+创新改进
手指关节分割系统:视觉算法突破