spring上傳下載
① 用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把這些數據保存到硬碟上,前端直接根據路徑來進行訪問。