Spring MVC多图片上传,多值上传

servlet-context.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:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:util="http://www.springframework.org/schema/util"

xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

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

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">

<context:component-scan base-package="com" />

<!--

<context:property-placeholder

location="/WEB-INF/spring/*.properties"

system-properties-mode="OVERRIDE" />

-->

<mvc:interceptors>

<mvc:interceptor>

<mvc:mapping path="/longinghou/*" />

<bean class="com.sino.interceptor.longingInterceptor" />

</mvc:interceptor>

</mvc:interceptors>

<mvc:annotation-driven />

<mvc:default-servlet-handler />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"

p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />

<util:properties id="controller" location="/WEB-INF/spring/controller.properties" />

<bean id="multipartResolver"

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<!-- 设置上传文件的最大尺寸为1MB -->

<property name="maxUploadSize">

<value>1048576</value>

</property>

</bean>

</beans>

HTML:

<%--

Document   : longing

Created on : 2014-7-28, 14:53:08

Author     : Administrator

--%>

<%@page import="java.util.Date"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>

<%--<%@page contentType="text/html" pageEncoding="UTF-8"%>--%>

<%

String path = request.getContextPath();

%>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>JSP Page</title>

<script type="text/javascript" src="<%=request.getContextPath()%>/js/jq.min.js"></script>

<script type="text/javascript">

var chenggongyu="${chenggongyu}";

if(chenggongyu!=""){

alert("生成成功");

}

function addone() {

var ss = "<div>标题:<input type=‘text‘ name=‘title‘><br>描述:<input type=‘text‘ name=‘miaoshu‘><br>URL:<input type=‘text‘ name=‘url‘><br> image:<input type=‘file‘ name=‘urlName‘><br><br><br></div>";

//                alert($("#xuanze").html())

//                $("#xuanze").html+ss;

//$("#xuanze").html($("#xuanze").html() + ss);

$("#xuanze").append(ss);

//                document.getElementById("xuanze").innerHTML+=ss;

}

function submitss() {

var titlearr = new Array();

var miaoshuarr = new Array();

var urlarr = new Array();

$("input[name=‘title‘]").each(

function() {

titlearr.push($(this).val());

}

);

$("input[name=‘miaoshu‘]").each(

function() {

miaoshuarr.push($(this).val());

}

);

$("input[name=‘url‘]").each(

function() {

urlarr.push($(this).val());

}

);

$("#titlearr").val(titlearr);

$("#miaoshuarr").val(miaoshuarr);

$("#urlarr").val(urlarr);

return true;

}

</script>

</head>

<body>

<form method="post" id="form1" action="<%=path%>/longinghou/succesfile" enctype="multipart/form-data" onsubmit="return submitss()">

欢迎您:${username}

<div id="xuanze">

第一行内容(头标题)<br>

标题:<input type="text" name="title"><br>

描述:<input type="text" name="miaoshu"><br>

URL:<input type="text" name="url"><br>

image:<input type="file" name="urlName"><br><br><br>

</div>

<input type="submit" value="提交" >&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp

<input type="button" value="再来一行" onclick="addone()">

<input type="hidden" id="titlearr" name="titlearr"/>

<input type="hidden" id="miaoshuarr" name="miaoshuarr"/>

<input type="hidden" id="urlarr" name="urlarr"/>

</form>

<!--          //action里的html是后缀名,不是HTML文件,用于spring对请求进行拦截判断

<form method="post" action="<%=path%>/longinghou/succesfile" enctype="multipart/form-data">

<input type="text" name="name" />

<input type="file" name="urlName" />

<input type="file" name="urlName" />

<input type="submit" />

</form>-->

</body>

</html>

Controller:

@RequestMapping(value = "/succesfile")

public String handleRequest(HttpServletRequest request,

HttpServletResponse response, @RequestParam MultipartFile[] urlName, @RequestParam String[] titlearr, @RequestParam String[] miaoshuarr, @RequestParam String[] urlarr) throws Exception {

//        for (int i = 0; i < urlName.length; i++) {

//            String fileName = urlName[i].getOriginalFilename();//获取上传第一个图片的名字

//            System.out.println(urlName[i].getOriginalFilename());

//        }

//        for (int i = 0; i < titlearr.length; i++) {

//            String fileName = titlearr[i];//获取上传第一个图片的名字

//            System.out.println(titlearr[i]);

//        }

//        for (int i = 0; i < miaoshuarr.length; i++) {

//            String fileName = miaoshuarr[i];//获取上传第一个图片的名字

//            System.out.println(miaoshuarr[i]);

//        }

//        for (int i = 0; i < urlarr.length; i++) {

//            String fileName = urlarr[i];//获取上传第一个图片的名字

//            System.out.println(urlarr[i]);

//        }

String neirong = "";

try {

String encoding = "GBK";

File file = new File(feile + "/temp.txt");

if (file.isFile() && file.exists()) { //判断文件是否存在

InputStreamReader read = new InputStreamReader(

new FileInputStream(file), encoding);//考虑到编码格式

BufferedReader bufferedReader = new BufferedReader(read);

String lineTxt = null;

while ((lineTxt = bufferedReader.readLine()) != null) {

neirong += lineTxt;

}

read.close();

} else {

System.out.println("找不到指定的文件");

}

} catch (Exception e) {

System.out.println("读取文件内容出错");

e.printStackTrace();

}

String lineirong = "";

for (int i = 0; i < urlName.length; i++) {

String neirongtihuan = tihuanneirong;

String title = titlearr[i];

String miaoshu = miaoshuarr[i];

String url = urlarr[i];

String img = urlName[i].getOriginalFilename();

if (i == 0) {

neirong = neirong.replace("{title1}", title);

neirong = neirong.replace("{miaoshu1}", miaoshu);

neirong = neirong.replace("{url1}", url);

neirong = neirong.replace("{img1}", img);

} else {

neirongtihuan = neirongtihuan.replace("{title}", title);

neirongtihuan = neirongtihuan.replace("{miaoshu}", miaoshu);

neirongtihuan = neirongtihuan.replace("{url}", url);

neirongtihuan = neirongtihuan.replace("{img}", img);

lineirong += neirongtihuan;

}

}

neirong = neirong.replace("{duogeli}", lineirong);

SimpleDateFormat df = new SimpleDateFormat("MMdd");//设置日期格式

String wenjianj = df.format(new Date());

File outfile = new File(feile + "/" + wenjianj);

if (!outfile.exists()) {

outfile.mkdirs();

} else {

fu.delFolder(feile + "/" + wenjianj);

outfile.mkdirs();

}

File htmlfile = new File(feile + "/" + wenjianj + "/hq.html");

htmlfile.createNewFile();

try {

FileOutputStream writerStream = new FileOutputStream(feile + "/" + wenjianj + "/hq.html");

BufferedWriter output = new BufferedWriter(new OutputStreamWriter(writerStream, "UTF-8")); //写入流

output.write(neirong); //s1为写入的字符串

output.flush();

output.close();

} catch (Exception e) {

log.info("html文件写入失败");

}

File imgfile = new File(feile + "/" + wenjianj + "/img");

imgfile.mkdirs();

//上传图片

for (int i = 0; i < urlName.length; i++) {

MultipartFile myfile = urlName[i];

if (myfile.isEmpty()) {

log.info("文件未上传");

} else {

String path = feile + "/" + wenjianj + "/img";

File file = new File(path);

if (!file.exists()) {

file.mkdirs();

}

// 这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉,我是看它的源码才知道的

// FileUtils.copyInputStreamToFile(myfile.getInputStream(),

// new File(path, myfile.getOriginalFilename()));

FileUtils.writeByteArrayToFile(new File(path, urlName[i].getOriginalFilename()),

myfile.getBytes());

}

}

request.setAttribute("chenggongyu", "1");

return "longinghou";

}

完整项目名称

neirongfabu

需要完整项目的请留言

Spring MVC多图片上传,多值上传

时间: 2024-08-21 03:06:24

Spring MVC多图片上传,多值上传的相关文章

基于spring mvc的图片验证码实现

基于spring mvc的图片验证码实现 标签: springmvcspring mvc验证码验证码验证 2016-01-28 10:49 8015人阅读 评论(4) 收藏 举报  分类: 表单处理 版权声明:本文为博主原创文章,未经博主允许不得转载. 本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) public void getAuthCode(HttpServ

Spring Mvc 笔记二之异常和文件上传

spring mvc的异常与文件上传 1.异常: spring注解版的异常有局部异常和全局异常                1.局部异常对单个controller有效;(在controller类写一个处理异常的方法) @ExceptionHandler(value={UserException.class}) public String handlerExceptionTest(UserException e ,HttpServletRequest request){ request.setA

Spring MVC学习:处理方法返回值的可选类型

spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. * ModelAndView Java代码 1. @RequestMapping("/show1") 2. public ModelAndView show1(HttpServletRequest request, 3. HttpServletResponse response) throws Exception { 4. Mod

Spring MVC灵活控制返回json的值(自定义过滤字段)

在使用spring MVC开发过程中,为了提高项目执行效率,所以在一些外键字段的实体中会注解"@ManyToOne(fetch = FetchType.LAZY)"以实现延迟加载的效果. 但是,在使用ajax请求数据,当需要返回的序列化数据中包含延迟加载的属性时,会出现错误,延迟加载的属性无法进行序列化.在这个时候,我们需要暂时取消延迟加载,以取到所有需要的数据. 可是,这样又会造成一堆垃圾数据的产生.序列化.传递至前台. 所以需要在控制层进行数据过滤,只序列化需要的数据. 具体过滤方

Strut2 和Spring MVC 文件上传对比

在Java领域中,有两个常用的文件上传项目:一个是Apache组织Jakarta的Common-FileUpload组件 (http://commons.apache.org/proper/commons-fileupload/),另一个是Oreilly组织的COS框架的 (http://www.servlets.com/cos). 1.Struts2的文件上传 Struts2本身并没提供上传的组件,我们可以通过调用上传框架来实现文件的上传,struts2默认是jakarta作为其文件上传的解析

Spring MVC 多文件上传大小限制及异常处理

Spring MVC  多文件上传大小限制及异常处理 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 在 spring mvc 的默认配置文件 WEB-INF/xxx-servlet.xml 中

《Spring实战》学习笔记-第七章:Spring MVC进阶

本章主要内容: 备用的Spring MVC配置项 处理文件上传 控制器中的异常处理 使用flash属性 "等等,客官!不止这些" 也许大家在看电视广告时对上面这句话比较熟悉,广告里通常在已经对商品做了完整的介绍,这时,电视里就会冒出这句:等等,客官,还不止这些...接着,就会继续吹嘘他们的商品还有更多让你意想不到的功能. 其实,Spring MVC(或者说Spring的每一个模块)就给人一种"不止这些"的感觉,就在你以为已经对Spring MVC的功能有了完备的了解

Spring MVC 基础

Spring MVC 基础 1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层面上给我们帮助,无法在思考和过程上帮助我们,而我们很多人都不喜欢思考和尝试. 2.实现Web MVC的基础 实现Web MVC基础可以概括为1个前段控制器和2个映射. (1)前端控制器FrontController ASP.NET和JSP都是以Page路径和URL一一对应

spring mvc 经典总结

概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 XML 配置文件中定义请求和 Controller 的映射关系,仅仅使用注解就可以让一个 POJO 具有 Controller 的绝大部分功能 —— Spring MVC 框架的易用性得到了进一步的增强.在框架灵活性.易用性和扩展性上,Spring MVC 已经全面超越了其它的 MVC 框架,伴随