¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package org.springblade.core.boot.file; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonIgnore; |
| | | import lombok.Data; |
| | | import org.springblade.core.boot.props.BladeFileProperties; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.core.tool.utils.SpringUtil; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | |
| | | /** |
| | | * ä¸ä¼ æä»¶å°è£
|
| | | * |
| | | * @author Chill |
| | | */ |
| | | @Data |
| | | public class LocalFile { |
| | | /** |
| | | * ä¸ä¼ æä»¶å¨é件表ä¸çid |
| | | */ |
| | | private Object fileId; |
| | | |
| | | /** |
| | | * ä¸ä¼ æä»¶ |
| | | */ |
| | | @JsonIgnore |
| | | private MultipartFile file; |
| | | |
| | | /** |
| | | * æä»¶å¤ç½å°å |
| | | */ |
| | | private String domain; |
| | | |
| | | /** |
| | | * ä¸ä¼ åç±»æä»¶å¤¹ |
| | | */ |
| | | private String dir; |
| | | |
| | | /** |
| | | * ä¸ä¼ ç©çè·¯å¾ |
| | | */ |
| | | private String uploadPath; |
| | | |
| | | /** |
| | | * ä¸ä¼ èæè·¯å¾ |
| | | */ |
| | | private String uploadVirtualPath; |
| | | |
| | | /** |
| | | * æä»¶å |
| | | */ |
| | | private String fileName; |
| | | |
| | | /** |
| | | * ç宿件å |
| | | */ |
| | | private String originalFileName; |
| | | |
| | | /** |
| | | * æä»¶é
ç½® |
| | | */ |
| | | private static BladeFileProperties fileProperties; |
| | | |
| | | private static BladeFileProperties getBladeFileProperties() { |
| | | if (fileProperties == null) { |
| | | fileProperties = SpringUtil.getBean(BladeFileProperties.class); |
| | | } |
| | | return fileProperties; |
| | | } |
| | | |
| | | public LocalFile(MultipartFile file, String dir) { |
| | | this.dir = dir; |
| | | this.file = file; |
| | | this.fileName = file.getName(); |
| | | this.originalFileName = file.getOriginalFilename(); |
| | | this.domain = getBladeFileProperties().getUploadDomain(); |
| | | this.uploadPath = BladeFileUtil.formatUrl(File.separator + getBladeFileProperties().getUploadRealPath() + File.separator + dir + File.separator + DateUtil.format(DateUtil.now(), "yyyyMMdd") + File.separator + this.originalFileName); |
| | | this.uploadVirtualPath = BladeFileUtil.formatUrl(getBladeFileProperties().getUploadCtxPath().replace(getBladeFileProperties().getContextPath(), "") + File.separator + dir + File.separator + DateUtil.format(DateUtil.now(), "yyyyMMdd") + File.separator + this.originalFileName); |
| | | } |
| | | |
| | | public LocalFile(MultipartFile file, String dir, String uploadPath, String uploadVirtualPath) { |
| | | this(file, dir); |
| | | if (null != uploadPath) { |
| | | this.uploadPath = BladeFileUtil.formatUrl(uploadPath); |
| | | this.uploadVirtualPath = BladeFileUtil.formatUrl(uploadVirtualPath); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å¾çä¸ä¼ |
| | | */ |
| | | public void transfer() { |
| | | transfer(getBladeFileProperties().getCompress()); |
| | | } |
| | | |
| | | /** |
| | | * å¾çä¸ä¼ |
| | | * |
| | | * @param compress æ¯å¦å缩 |
| | | */ |
| | | public void transfer(boolean compress) { |
| | | IFileProxy fileFactory = FileProxyManager.me().getDefaultFileProxyFactory(); |
| | | this.transfer(fileFactory, compress); |
| | | } |
| | | |
| | | /** |
| | | * å¾çä¸ä¼ |
| | | * |
| | | * @param fileFactory æä»¶ä¸ä¼ å·¥åç±» |
| | | * @param compress æ¯å¦å缩 |
| | | */ |
| | | public void transfer(IFileProxy fileFactory, boolean compress) { |
| | | try { |
| | | File file = new File(uploadPath); |
| | | |
| | | if (null != fileFactory) { |
| | | String[] path = fileFactory.path(file, dir); |
| | | this.uploadPath = path[0]; |
| | | this.uploadVirtualPath = path[1]; |
| | | file = fileFactory.rename(file, path[0]); |
| | | } |
| | | |
| | | File pfile = file.getParentFile(); |
| | | if (!pfile.exists()) { |
| | | pfile.mkdirs(); |
| | | } |
| | | |
| | | this.file.transferTo(file); |
| | | |
| | | if (compress) { |
| | | fileFactory.compress(this.uploadPath); |
| | | } |
| | | |
| | | } catch (IllegalStateException | IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | } |