Springboot 上传文件至阿里云OSS

来源:互联网 发布:北京谷歌seo 编辑:程序博客网 时间:2024/06/05 07:15

导入依赖包

在pox.xml中加入

<dependency>    <groupId>com.aliyun.oss</groupId>    <artifactId>aliyun-sdk-oss</artifactId>    <version>2.7.0</version></dependency>

OSS上传工具类

/** * OSS上传工具类 * 2017/10/26 * * @author Cheivin * @version 1.0 */public class AliOSSUtil {    private final static Logger logger = Logger.getLogger(AliOSSUtil.class);    /**     * 管理控制台里面获取EndPoint     */    private final static String END_POINT = "oss-cn-shanghai.aliyuncs.com";    /**     * 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建     */    private final static String ACCESS_KEY_ID = "这里填你的ACCESSKEY";    private final static String ACCESS_KEY_SECRET = "这里填你的ACCESSKEYSECRET";    /**     * 上传的BUCKET名称     */    private final static String BUCKET_NAME = "这里填你的BUCKET名称";    /**     * 管理控制台里面获取的访问域名     */    private final static String FILE_HOST = "这里填访问域名";    /**     * 上传文件到bucket     *     * @param file     本地文件     * @param dir      bucket存放目录(末尾要加/)     * @param fileName 上传文件名     * @return 访问地址     */    public static String uploadLocalFile(File file, String dir, String fileName) {        if (file == null || !file.exists()) {            return null;        }        // 创建OSSClient实例        OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);        try {            // 上传文件            PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, dir + fileName, file));            if (null != result) {                return FILE_HOST + dir + fileName;            } else {                return null;            }        } catch (OSSException | ClientException oe) {            logger.error("上传OSS失败:", oe);            oe.printStackTrace();            return null;        } finally {            // 关闭OSS服务            ossClient.shutdown();        }    }    /**     * 上传文件到bucket     *     * @param file 本地文件     * @param dir  bucket目录     * @return 访问地址     */    public static String uploadLocalFile(File file, String dir) {        if (file == null) {            return null;        }        String filePath = dir + file.getName();        // 创建OSSClient实例        OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);        try {            // 上传文件            PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, filePath, file));            if (null != result) {                // 拼装访问地址                return FILE_HOST + filePath;            } else {                return null;            }        } catch (OSSException | ClientException oe) {            logger.error("OSS上传失败:", oe);            oe.printStackTrace();            return null;        } finally {            // 关闭OSS服务            ossClient.shutdown();        }    }}

上传图片

/** * 文件上传controller * 2017/10/26 * * @author Cheivin * @version 1.0 */@RestControllerpublic class UploadController {    private static Logger logger = Logger.getLogger(UserController.class);    /**     * 本地存放目录     */    private static String uoloadPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "upload/";    @PostMapping("/upload")    public String imageUpload(HttpServletRequest request, @RequestParam("file") MultipartFile file) {        if (!file.isEmpty()) {            try {                // 上传文件信息                logger.info("OriginalFilename:" + file.getOriginalFilename());                logger.info("ContentType:" + file.getContentType());                logger.info("Name:" + file.getName());                logger.info("Size:" + file.getSize());                //TODO:文件大小、名称、类型检查的业务处理                // 检查上传目录                File targetFile = new File(uoloadPath);                if (!targetFile.exists()) {                    targetFile.mkdirs();                }                // 实例化输出流                BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(uoloadPath + file.getOriginalFilename()));                out.write(file.getBytes());                out.flush();                out.close();                // 上传到OSS                String url = AliOSSUtil.uploadLocalFile(new File(uoloadPath + file.getOriginalFilename()), "upload/avatar/");                if (url == null) {                    //TODO:上传失败的业务处理                    return "上传失败";                }                logger.info("上传完毕,访问地址:"+url);                return "上传成功";            } catch (IOException e) {                e.printStackTrace();                logger.error("上传失败", e);                return "上传失败";            }        }        return "上传失败,因为文件是空的.";    }}

一些配置的信息,可以放在配置文件中,通过@Value(“配置项名”)方式注入。

原创粉丝点击