SSM檔案的上傳、查詢、刪除案例
阿新 • • 發佈:2020-12-17
檔案上傳的幾個注意點:
- 方法請求必須為post請求。
- form標籤的encType屬性值必須為multipart/form-data。
- form表單中input標籤type為file。
- 需要匯入兩個jar包。
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
- springmvc.xml中配置
<!--配置檔案上傳--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="1048576"></property> <!-- 設定預設編碼--> <property name="defaultEncoding" value="utf-8"></property> </bean>
資料庫表
實體類
public class LabFile {
private Integer file_id;
private String file_name;
private String file_type;
private String upload_time;
private String file_url;
......
}
LabFileDao
public interface LabFileDao { /** * 新增檔案 * @param fileInfo */ public void addFileInfo(LabFile fileInfo) throws SQLException; /** * 查詢所有的檔案 * @return */ public List<LabFile> findFiles() throws SQLException; /** * 根據id查詢檔案 * @param fileId * @return */ public int findFileById(Integer fileId) throws SQLException; /** * 根據id刪除檔案 * @param file_id * @return */ @Delete("delete from lab_file where file_id = #{file_id}") int deleteById(Integer file_id) throws SQLException; }
FileDao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lynu.dao.LabFileDao">
<!--上傳檔案-->
<insert id="addFileInfo" parameterType="LabFile">
insert into lab_file (file_name,file_type,upload_time,file_url)
values (#{file_name},#{file_type},#{upload_time},#{file_url});
</insert>
<!--查詢所有檔案-->
<select id="findFiles" resultType="LabFile">
select file_id,file_name,file_type,upload_time,file_url from lab_file;
</select>
</mapper>
工具類
FileUtil
public class FileUtil {
public FileUtil() {
}
public static String createFileTimestamp() {
Date date = new Date();
long time = date.getTime();
return String.valueOf(time);
}
public static void writeFileToUrl(MultipartFile file, String fileUrl) throws IOException {
FileOutputStream fos = new FileOutputStream(new File(fileUrl));
fos.write(file.getBytes());
fos.flush();
fos.close();
}
public static void main(String[] args) {
System.out.println(createFileTimestamp());
}
}
DateUtils
public class DateUtils {
public static String dateToStrDateTime(Date date,String dateFormat){
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
String dateTime = df.format(date);
return dateTime;
}
}
LabFileService
public interface LabFileService {
/**
* 新增檔案
* @param fileInfo
*/
public void addFileInfo(LabFile fileInfo) throws SQLException;
/**
* 查詢所有的檔案
* @return
*/
public List<LabFile> findFiles() throws SQLException;
/**
* 根據id查詢檔案
* @param fileId
* @return
*/
public int findFileById(Integer fileId) throws SQLException;
/**
* 根據id刪除檔案
* @param file_id
* @return
*/
@Delete("delete from lab_file where id = #{file_id}")
int deleteById(Integer file_id) throws SQLException;
}
LabFileServiceImpl
@Service("fileService")
public class LabFileServiceImpl implements LabFileService {
@Autowired
private LabFileDao labFileDao;
@Override
public void addFileInfo(LabFile fileInfo) throws SQLException {
labFileDao.addFileInfo(fileInfo);
}
@Override
public List<LabFile> findFiles() throws SQLException {
return labFileDao.findFiles();
}
@Override
public int findFileById(Integer fileId) throws SQLException {
return labFileDao.deleteById(fileId);
}
@Override
public int deleteById(Integer file_id) throws SQLException {
return labFileDao.deleteById(file_id);
}
}
LabFileController
@Controller
@RequestMapping("/file")
public class LabFileController {
@Autowired
private LabFileService labFileService;
@RequestMapping(value = {"/uploadFile"}, method = {RequestMethod.POST},produces = "application/json;charset=utf-8")
@ResponseBody
public LabFile upload(LabFile fileInfo,MultipartFile uploadFile, HttpServletRequest request) throws IOException {
System.out.println("uploadFile = " + uploadFile);
//獲得檔案
byte[] buf = uploadFile.getBytes();
System.out.println("檔案長度" + buf.length);
//檔名
System.out.println("檔名getName = " + uploadFile.getName());
System.out.println("檔名getOriginalFilename = "
+ uploadFile.getOriginalFilename());
//檔名 a.txt
String originalFileName = uploadFile.getOriginalFilename();
//時間戳
String time = FileUtil.createFileTimestamp();
//檔案url /upload/1231231231231a.txt
String fileUrl = "/upload/" + time + originalFileName;
fileUrl = request.getServletContext().getRealPath(fileUrl);
System.out.println("fileUrl = " + fileUrl);
//向url地址儲存檔案
FileUtil.writeFileToUrl(uploadFile, fileUrl);
//向資料庫中儲存檔案資訊
fileInfo.setFile_name(originalFileName);
fileInfo.setFile_url(fileUrl);
Date date = new Date();
String dateTime = DateUtils.dateToStrDateTime(date, "yyyy-MM-dd HH:mm:ss");
fileInfo.setUpload_time(dateTime);
/*TeamPeo teamPeo = new TeamPeo();
fileInfo.setTeamPeo(teamPeo);*/
try {
labFileService.addFileInfo(fileInfo);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return fileInfo;
}
@RequestMapping(value = "/findFiles",produces = "application/json;charset=utf-8")
@ResponseBody
public String files() {
ObjectMapper objectMapper = new ObjectMapper();
String str = null;
try {
List<LabFile> files = labFileService.findFiles();
str = objectMapper.writeValueAsString(files);
} catch (JsonProcessingException | SQLException var5) {
var5.printStackTrace();
}
return str;
}
@RequestMapping(value = "/delete",produces = "application/json;charset=utf-8")
@ResponseBody
public int delete(Integer file_id) throws SQLException {
return labFileService.deleteById(file_id);
}
}