java 多文件同时上传

阅读: 评论:0

java 多文件同时上传

java 多文件同时上传

文件上传一直是Web项目中必不可少的一项功能。

项目结构如下:(这是我之前创建的SSM整合的框架项目,在这上面添加文件上传与下载)

主要的是FileUploadController,doupload.jsp,up.l

1.先编写up.jsp

上传者:

选择文件:

选择文件:

以上便是up.jsp的核心代码;

2.编写doupload.jsp

request.setCharacterEncoding("utf-8");

String uploadFileName = ""; //上传的文件名

String fieldName = ""; //表单字段元素的name属性值

//请求信息中的内容是否是multipart类型

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

//上传文件的存储路径(服务器文件系统上的绝对文件路径)

String uploadFilePath = Session().getServletContext().getRealPath("upload/" );

if (isMultipart) {

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

try {

//解析form表单中所有文件

List items = upload.parseRequest(request);

Iterator iter = items.iterator();

while (iter.hasNext()) { //依次处理每个文件

FileItem item = (FileItem) ();

if (item.isFormField()){ //普通表单字段

fieldName = FieldName(); //表单字段的name属性值

if (fieldName.equals("user")){

//输出表单字段的值

out.String("UTF-8")+"上传了文件。
");

}

}else{ //文件表单字段

String fileName = Name();

if (fileName != null && !fileName.equals("")) {

File fullFile = new Name());

File saveFile = new File(uploadFilePath, Name());

item.write(saveFile);

uploadFileName = Name();

out.print("上传成功后的文件名是:"+uploadFileName);

out.print("tt下载链接:"+""+uploadFileName+"");

out.print("
");

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

%>

该页面主要是内容是,通过解析request,并设置上传路径,创建一个迭代器,先进行判空,再通过循环来实现多个文件的上传,再输出文件信息的同时打印文件下载路径。

效果图:

3.编写FilterController实现文件下载的功能(相对上传比较简单):

@Controller

public class FileUploadController {

@RequestMapping(value="/download")

public ResponseEntity download(HttpServletRequest request,HttpServletResponse response,@RequestParam("name") String filename)throws Exception {

//下载显示的文件名,解决中文名称乱码问题

filename=new Bytes("iso-8859-1"),"UTF-8");

//下载文件路径

String path = ServletContext().getRealPath("/upload/");

File file = new File(path + File.separator + filename);

HttpHeaders headers = new HttpHeaders();

//下载显示的文件名,解决中文名称乱码问题

String downloadFielName = new Bytes("iso-8859-1"),"UTF-8");

//通知浏览器以attachment(下载方式)打开图片

headers.setContentDispositionFormData("Content-Disposition", downloadFielName);

//application/octet-stream : 二进制流数据(最常见的文件下载)。

headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

return new adFileToByteArray(file),

headers, HttpStatus.CREATED);

}

}

4.实现上传文件的功能还需要在springmvc中配置bean:

class="org.springframework.web.multipartmons.CommonsMultipartResolver">

10485760

UTF-8

完整代码如下:

up.jsp

File控件

上传者:

选择文件:

选择文件:

doupload.jsp

上传处理页面

request.setCharacterEncoding("utf-8");

String uploadFileName = ""; //上传的文件名

String fieldName = ""; //表单字段元素的name属性值

//请求信息中的内容是否是multipart类型

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

//上传文件的存储路径(服务器文件系统上的绝对文件路径)

String uploadFilePath = Session().getServletContext().getRealPath("upload/" );

if (isMultipart) {

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

try {

//解析form表单中所有文件

List items = upload.parseRequest(request);

Iterator iter = items.iterator();

while (iter.hasNext()) { //依次处理每个文件

FileItem item = (FileItem) ();

if (item.isFormField()){ //普通表单字段

fieldName = FieldName(); //表单字段的name属性值

if (fieldName.equals("user")){

//输出表单字段的值

out.String("UTF-8")+"上传了文件。
");

}

}else{ //文件表单字段

String fileName = Name();

if (fileName != null && !fileName.equals("")) {

File fullFile = new Name());

File saveFile = new File(uploadFilePath, Name());

item.write(saveFile);

uploadFileName = Name();

out.print("上传成功后的文件名是:"+uploadFileName);

out.print("tt下载链接:"+""+uploadFileName+"");

out.print("
");

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

%>

FileUploadController.java

troller;

import java.io.File;

import java.URLDecoder;

import java.util.Iterator;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apachemons.fileupload.FileItem;

import org.apachemons.fileupload.FileItemFactory;

import org.apachemons.fileupload.disk.DiskFileItemFactory;

import org.apachemons.fileupload.servlet.ServletFileUpload;

import org.apachemons.io.FileUtils;

import org.junit.runners.Parameterized.Parameter;

import org.springframework.http.HttpHeaders;

import org.springframework.http.HttpStatus;

import org.springframework.http.MediaType;

import org.springframework.http.ResponseEntity;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.ModelAttribute;

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;

@Controller

public class FileUploadController {

@RequestMapping(value="/download")

public ResponseEntity download(HttpServletRequest request,HttpServletResponse response,@RequestParam("name") String filename)throws Exception {

//下载显示的文件名,解决中文名称乱码问题

filename=new Bytes("iso-8859-1"),"UTF-8");

//下载文件路径

String path = ServletContext().getRealPath("/upload/");

File file = new File(path + File.separator + filename);

HttpHeaders headers = new HttpHeaders();

//下载显示的文件名,解决中文名称乱码问题

String downloadFielName = new Bytes("iso-8859-1"),"UTF-8");

//通知浏览器以attachment(下载方式)打开图片

headers.setContentDispositionFormData("Content-Disposition", downloadFielName);

//application/octet-stream : 二进制流数据(最常见的文件下载)。

headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

return new adFileToByteArray(file),

headers, HttpStatus.CREATED);

}

}

xmlns:xsi=""

xmlns:mvc=""

xmlns:context=""

xmlns:aop=""

xmlns:tx=""

xsi:schemaLocation="

.2.xsd

.2.xsd

.xsd

.2.xsd

.xsd">

class="org.springframework.web.multipartmons.CommonsMultipartResolver">

10485760

UTF-8

Student

index.html

index.htm

index.jsp

default.html

default.htm

default.jsp

springmvc

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

l

1

springmvc

*.action

contextConfigLocation

classpath:spring/applicationContext-*.xml

org.t.ContextLoaderListener

以上便为文件上传和下载的全部代码,博主亲测过,没有问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文发布于:2024-01-30 23:22:48,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170662817123577.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:上传   文件   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23