当前位置:首页 » 文件管理 » spring上传下载

spring上传下载

发布时间: 2022-09-11 09:23:11

① 用Struts2.0+Spring2.0+hibernate3.1怎样实现文件的上传和下载

利用MultipartFile实现文件上传
java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的MultipartFile实现文件上传,感觉挺简单,在这里和大家分享一下.
一.主要有两个java类,和一般的servlet放在一起即可.
1.FileUploadBean.java
package chb.demo.web;

import org.springframework.web.multipart.MultipartFile;

/**
* @author chb
*
*/
public class FileUploadBean {

private MultipartFile file;

public void setFile(MultipartFile file) {
this.file = file;
}

public MultipartFile getFile() {
return file;
}
}
2.FileUploadController.java
package chb.demo.web;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

/**
* @author chb
*
*/
public class FileUploadController extends SimpleFormController {

protected ModelAndView onSubmit(
HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException errors){

try
{
// cast the bean
FileUploadBean bean = (FileUploadBean) command;

// let's see if there's content there
MultipartFile file = bean.getFile();

if (file == null) {
throw new Exception("上传失败:文件为�空");
}
if(file.getSize()>10000000)
{
throw new Exception("上传失败:文件大小不能超过10M");
}
//得到文件�名
String filename=file.getOriginalFilename();

if(file.getSize()>0){
try {
SaveFileFromInputStream(file.getInputStream(),"D:/",filename);
} catch (IOException e) {
System.out.println(e.getMessage());
return null;
}
}
else{
throw new Exception("上传失败:上传文件不能为�空");
}
// well, let's do nothing with the bean for now and return:
try {
return super.onSubmit(request, response, command, errors);

} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
return null;
}
}

/**保存文件
* @param stream
* @param path
* @param filename
* @throws IOException
*/
public void SaveFileFromInputStream(InputStream stream,String path,String filename) throws IOException
{
FileOutputStream fs=new FileOutputStream( path + "/"+ filename);
byte[] buffer =new byte[1024*1024];
int bytesum = 0;
int byteread = 0;
while ((byteread=stream.read(buffer))!=-1)
{
bytesum+=byteread;
fs.write(buffer,0,byteread);
fs.flush();
}
fs.close();
stream.close();
}
}

二.配置文件中如下配置:
1.web.xml,利用spring mvc模式,大家应该都很熟悉了
<servlet>
<servlet-name>chb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>chb</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2.chb-servlet.xml,这里要配置映射,并可以设定最大可上传文件的大小
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Multi-Action 用来标识method的变量名定义-->
<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName">
<value>action</value>
</property>
<property name="defaultMethodName">
<value>index</value>
</property>
</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="10000000"/>
</bean>

<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/upload.do">fileUploadController</prop>
</props>
</property>
</bean>

<bean id="fileUploadController" class="chb.demo.web.FileUploadController">
<property name="commandClass" value="chb.demo.web.FileUploadBean"/>
<!-- 上传失败时跳转页面 -->
<property name="formView" value="/user/err.jsp"/>
<!-- 上传成功时跳转页面 -->
<property name="successView" value="/user/confirmation.jsp"/>
</bean>
</beans>
三.设定jsp页面
<form id="form1" method="post" action="upload.do" enctype="multipart/form-data">
<tr>
<td width="25%" align="right">上传文件:</td>
<td><input id="file" type="file" NAME="file" style="width:300px;"></td>
</tr>
<tr align="center" valign="middle">
<td height="60" colspan="2"><input type="submit" ID="BtnOK" value="确认上传"></td>
</tr>
</form>
ok,现在就可以上传文件了,挺简单吧?这里我只列出了基本步骤,至于具体的操作(比如中文问题)可能就需要大家自己再完善完善了.

② springboot多文件上传

MultipartFile提供了以下方法来获取上传文件的信息:

getOriginalFilename,获取上传的文件名字;

getBytes,获取上传文件内容,转为字节数组;

getInputStream,获取一个InputStream;

isEmpty,文件上传内容为空,或者根本就没有文件上传;

getSize,文件上传的大小。

transferTo(File dest),保存文件到目标文件系统;

同时上传多个文件,则使用MultipartFile数组类来接受多个文件上传:

//多文件上传 @RequestMapping(value = "/batch/upload", method = RequestMethod.POST)

    @ResponseBody    public String handleFileUpload(HttpServletRequest request){

        List<MultipartFile> files = ((MultipartHttpServletRequest) request)

                .getFiles("file");

        MultipartFile file = null;

        BufferedOutputStream stream = null;

        for (int i = 0; i < files.size(); ++i) {

            file = files.get(i);

            if (!file.isEmpty()) {

                try {

                    byte[] bytes = file.getBytes();

                    stream = new BufferedOutputStream(new FileOutputStream(

                            new File(file.getOriginalFilename())));

                    stream.write(bytes);

                    stream.close();

                } catch (Exception e) {

                    stream = null;

                    return "You failed to upload " + i + " => "                            + e.getMessage();

                }

            } else {

                return "You failed to upload " + i

                        + " because the file was empty.";

            }

        }

        return "upload successful";

    }

可以通过配置application.properties对SpringBoot上传的文件进行限定默认为如下配置:

spring.servlet.multipart.enabled=true

spring.servlet.multipart.file-size-threshold=0

spring.servlet.multipart.location=

spring.servlet.multipart.max-file-size=1MB

spring.servlet.multipart.max-request-size=10MB

spring.servlet.multipart.resolve-lazily=false

enabled默认为true,既允许附件上传。

file-size-threshold限定了当上传文件超过一定长度时,就先写到临时文件里。有助于上传文件不占用过多的内存,单位是MB或KB,默认0,既不限定阈值。

location指的是临时文件的存放目录,如果不设定,则web服务器提供一个临时目录。

max-file-size属性指定了单个文件的最大长度,默认1MB,max-request-size属性说明单次HTTP请求上传的最大长度,默认10MB.

resolve-lazily表示当文件和参数被访问的时候再被解析成文件。

③ spring mvc中怎么用commons-fileupload上传下载文件,好迷茫

我们后台是用hibernate实现的
数据库对应的实体的类型设为blob类型
用hibernate将二进制流转为blob类型
Hibernate.createBlob(inputStream)转为blob

④ Spring mvc+Hibernate 上传和下载 项目环境 myEplice+SpringMVC+hibernate

数据库里保存的只是文件在服务器上的地址,上传时把文件保存在服务器上,同时设置保存的目录,然后把目录信息保存到数据库中。

⑤ springboot zip文件上传无法解压

解决方法如下:
1、使用xshell登录服务器。
2、安装lrzsz软件。
3、使用rz-y命令然后进行文件上传。
4、使用sz命令下载,命令格式如下,之后就可以重新试一下文件上传后能不能解压。

⑥ SpringBoot + SFTP 实现文件上传与下载实战

SFTP介绍

实战

1. 相关依赖(基于SpringBoot)

2. 相关配置

3. 将application.properties中配置转为一个Bean

4. 将上传下载文件封装成Service

5. 上传文件

6. 下载文件

7. 删除文件

8. 最后

⑦ 用spring mvc 如何实现对excel文件的下载和上传

我现在也在做这个,我用的是阿帕奇提供的poi

⑧ spring+spring mvc+ hibernate框架里怎么实现图片的上传,下载,展示功能

这个嘛 只和SpringMVC有点关系。 前端提交的文件,由springmvc拦截进行处理。
您可以使用上传插件。比如网络上传插件:Web Uploader。
怎么用的话,官网有Demo。也有API文档,可以自行查阅。
当然不用插件的话,也可以自己做个简单的,用Form表单提交到后台,后台对文件进行保存,展示的话直接用<img src='xxx路径'>。您可以自己组织语言网络搜索一下代码怎么写。
上传文件实际上就是传输一些数据到后台,然后使用java把这些数据保存到硬盘上,前端直接根据路径来进行访问。

热点内容
百度文字识别编译 发布:2024-10-11 11:10:29 浏览:674
服务器封了ip 发布:2024-10-11 11:10:25 浏览:237
ae表达式修复脚本 发布:2024-10-11 11:10:25 浏览:198
流言传播算法 发布:2024-10-11 10:35:27 浏览:178
炉料存储图片 发布:2024-10-11 10:35:24 浏览:188
电脑配置低怎么开雷电 发布:2024-10-11 10:26:55 浏览:551
口袋妖怪日月服务器爆满了怎么办 发布:2024-10-11 10:18:13 浏览:974
加密勒索 发布:2024-10-11 10:04:53 浏览:39
存储卡有两个分区该怎么合并 发布:2024-10-11 09:26:50 浏览:912
安卓私密文件怎么隐藏 发布:2024-10-11 09:24:35 浏览:926