All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zodiac.boot.file.LocalFileProxyFactory Maven / Gradle / Ivy

The newest version!
package org.zodiac.boot.file;

import org.zodiac.boot.config.PlatformUploadFileInfo;
import org.zodiac.commons.support.SpringContextHolder;
import org.zodiac.sdk.toolkit.constants.StringPool;
import org.zodiac.sdk.toolkit.util.DateTimeUtil;
import org.zodiac.sdk.toolkit.util.image.ImageUtil;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Date;

/**
 * 文件代理类。
 *
 */
public class LocalFileProxyFactory implements FileProxy {

    /*
     * 文件配置。
     */
    private static PlatformUploadFileInfo platformFileInfo;

    private static PlatformUploadFileInfo getPlatformFileInfo() {
        if (platformFileInfo == null) {
            platformFileInfo = SpringContextHolder.getBean(PlatformUploadFileInfo.class);
        }
        return platformFileInfo;
    }

    @Override
    public File rename(File f, String path) {
        File dest = new File(path);
        f.renameTo(dest);
        return dest;
    }

    @Override
    public String[] path(File f, String dir) {
        /*避免网络延迟导致时间不同步。*/
        long time = System.nanoTime();

        StringBuilder uploadPath =
            new StringBuilder().append(getFileDir(dir, getPlatformFileInfo().getUploadRealPath())).append(time)
                .append(getFileExt(f.getName()));

        StringBuilder virtualPath =
            new StringBuilder().append(getFileDir(dir, getPlatformFileInfo().getUploadCtxPath())).append(time)
                .append(getFileExt(f.getName()));

        return new String[] {PlatformFileUtil.formatUrl(uploadPath.toString()),
            PlatformFileUtil.formatUrl(virtualPath.toString())};
    }

    /**
     * 获取文件后缀。
     *
     * @param fileName 文件名
     * @return 文件后缀
     */
    public static String getFileExt(String fileName) {
        if (!fileName.contains(StringPool.DOT)) {
            return ".jpg";
        } else {
            return fileName.substring(fileName.lastIndexOf(StringPool.DOT));
        }
    }

    /**
     * 获取文件保存地址。
     *
     * @param dir 目录
     * @param saveDir 保存目录
     * @return 地址
     */
    public static String getFileDir(String dir, String saveDir) {
        StringBuilder newFileDir = new StringBuilder();
        newFileDir.append(saveDir).append(File.separator).append(dir).append(File.separator)
            .append(DateTimeUtil.format(new Date(), "yyyyMMdd")).append(File.separator);
        return newFileDir.toString();
    }

    /**
     * 图片压缩。
     *
     * @param path 文件地址
     */
    @Override
    public void compress(String path) {
        try {
            ImageUtil.zoomScale(ImageUtil.readImage(path), new FileOutputStream(new File(path)), null,
                getPlatformFileInfo().getCompressImageScale(), getPlatformFileInfo().isCompressImageFlag());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy