1. 程式人生 > 實用技巧 >SSM檔案的上傳、查詢、刪除案例

SSM檔案的上傳、查詢、刪除案例

檔案上傳的幾個注意點:

  1. 方法請求必須為post請求。
  2. form標籤的encType屬性值必須為multipart/form-data。
  3. form表單中input標籤type為file。
  4. 需要匯入兩個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>
  1. 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);

    }

}