package com.hzs.common.core.utils;

import com.hzs.common.core.config.OssConfig;
import com.hzs.common.core.domain.FileResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;

/**
 * 文件上传工具
 */
@Slf4j
public class UploadFileUtil {

    /**
     * 文件上传
     *
     * @param file 上传文件
     * @param path 文件上传路径（不传入默认按年月日创建）
     * @return
     */
    public static FileResult upload(MultipartFile file, String path) {
        try {
            // 上传并返回访问地址
            String filePath = OssUtil.uploadMultipartFile(file, path, null);
            if (null != filePath) {
                FileResult fileResult = new FileResult();
                fileResult.setName(filePath);
                fileResult.setUrl(OssConfig.getFilePath() + filePath);
                return fileResult;
            }
        } catch (Exception e) {
            log.error("上传文件失败", e);
        }
        return null;
    }

    /**
     * 文件上传
     *
     * @param file 上传文件
     * @param path 文件上传路径（不传入默认按年月日创建）
     * @return
     */
    public static FileResult upload(File file, String path) {
        try {
            // 上传并返回访问地址
            String filePath = OssUtil.uploadFile(file, path, null);
            if (null != filePath) {
                FileResult fileResult = new FileResult();
                fileResult.setName(filePath);
                fileResult.setUrl(OssConfig.getFilePath() + filePath);
                return fileResult;
            }
        } catch (Exception e) {
            log.error("上传文件失败", e);
        }
        return null;
    }

    /**
     * 文件流上传
     *
     * @param inputStream 上传文件流
     * @param ext         扩展名
     * @param path        文件上传路径（不传入默认按年月日创建）
     * @return
     */
    public static FileResult upload(InputStream inputStream, String ext, String path) {
        try {
            // 上传并返回访问地址
            String filePath = OssUtil.uploadFileForStream(inputStream, ext, path, null);
            if (null != filePath) {
                FileResult fileResult = new FileResult();
                fileResult.setName(filePath);
                fileResult.setUrl(OssConfig.getFilePath() + filePath);
                return fileResult;
            }
        } catch (Exception e) {
            log.error("上传文件失败", e);
        }
        return null;
    }

}
