1.在form表單中加入屬性enctype="multipart/form-data"java
2.給一個input type類型爲file 的輸入框還有給nameapache
在struts.xml中配置服務器
<!-- 設置struts2上傳的文件大小,默認狀況下的大小是2M ,默認單位是B,目前允dom
許上傳的最大爲100M -->ui
<constant name="struts.multipart.maxSize" value="104857600"/>this
1.接收圖片的參數定義規則:url
文件名稱的接收:必須定義的是全局變量,表單中的file框中的name值加上FileName;orm
2.接收文件內容的參數xml
private File photo;屬性名和input中的name值同樣。圖片
1.文件重命名
2.文件的上傳.
package com.fh.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
import org.apache.struts2.ServletActionContext;
/**
* @ClassName: FileUpload
* @Description: TODO(這裏用一句話描述這個類的做用)
* @author shangfeng
* @date 2018-6-24 上午11:00:46*/
public class FileUpload {
private String photoFileName;
private File photo;
public void uploadFile() {
System.out.println(photoFileName);
// 第一大步就是給文件重命名
// 先獲取文件的後綴名
String suffix =
photoFileName.substring(photoFileName.lastIndexOf("."));
System.out.println(suffix);
// 獲取一個32位的UUID
String uuid = UUID.randomUUID().toString().replace("-", "");
System.out.println(uuid);
String newFileName = uuid + suffix;
// 第二大步,就是將文件上傳到指定文件夾中。
// 1.獲取項目的發佈路徑
String realPath =
ServletActionContext.getServletContext().getRealPath(
"/");
System.out.println(realPath);
// 讀取服務器上的文件目錄
File filemdk = new File(realPath + "/" + "photo");
if (!filemdk.exists()) {
filemdk.mkdirs();
}
// 輸入流
FileInputStream fis = null;
// 輸出流FileOutputStream fos = null;
try {
// 獲取輸入流
fis = new FileInputStream(photo);
// 構建輸出流
fos = new FileOutputStream(filemdk + "/" + newFileName);
byte[] b = new byte[fis.available()];
fis.read(b);
fos.write(b);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public String getPhotoFileName() {
return photoFileName;
}
public void setPhotoFileName(String photoFileName) {
this.photoFileName = photoFileName;
}public File getPhoto() {
return photo;
}
public void setPhoto(File photo) {
this.photo = photo;
}
}
1.新增表單要加入圖片上傳功能。
2.列表要進行圖片展現
3.修改表單要加入圖片的回顯展現和新圖片的上傳功能。
action類中還要加入圖片的刪除造做
String realPath = ServletActionContext.getServletContext()
.getRealPath("/");
String oldFilePath = game.getCimgurl();
File file = new File(realPath + oldFilePath);
if (file != null) {
file.delete();
}