Java中使用RestFul接口上传图片到阿里云OSS服务器

1.接口方法

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSONObject;
import com.voyage.client.util.ApiResponse;
import com.voyage.client.util.OSSUtil;
import com.voyage.client.util.StringUtil;

@RestController
@RequestMapping("/resource")
public class BasicController {

    /*
     * 图片上传
     */
    @PostMapping("/imgUpload")
    public ApiResponse imgUpload(HttpServletRequest request, @RequestParam("file") MultipartFile file) {

        String url = "";
        if (file != null) {

            String fileName = file.getOriginalFilename();//获取上传原图片名称
            String newFileName = StringUtil.guid() + fileName.substring(fileName.lastIndexOf("."));//生成保存在服务器的图片名称,延用原后缀名
            try {
                OSSUtil.upload(newFileName, file.getInputStream());
                url = newFileName;
            } catch (IOException e) {

                e.printStackTrace();
            }
        }
        JSONObject r = new JSONObject();
        r.put("url", OSSUtil.getUrl(url, ""));
        //r.put("snapshotUrl", OSSUtil.getUrl(url, "?x-oss-process=image/resize,m_fixed,h_200,w_200"));
        return new ApiResponse(r);

    }

}

2.oss图片上传工具类

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

public class OSSUtil {

    private static String endpoint = "oss-cn-shenzhen.aliyuncs.com";

    private static String accessKeyId = "LT*******3";

    private static String accessKeySecret = "U**************Y4A";

    private static String bucketName = "bucketName";

    private static OSSClient ossClientStatic;

    static {
        ossClientStatic = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    }

    /**
     * 上传到OSS服务器 如果同名文件会覆盖服务器上的
     *
     * @param fileName 文件名称 包括后缀名
     * @param instream 文件流
     * @return 出错返回"" ,唯一MD5数字签名
     */
    public static String upload(String fileName, InputStream instream) {
        String resultStr = "";
        try {

            // 创建上传Object的Metadata
            ObjectMetadata objectMetadata = new ObjectMetadata();
//            objectMetadata.setContentLength(instream.available());
//            objectMetadata.setCacheControl("no-cache");
//            objectMetadata.setHeader("Pragma", "no-cache");
//            objectMetadata.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));
//            objectMetadata.setContentDisposition("inline;filename=" + fileName);

            // 上传文件 (上传文件流的形式)
            PutObjectResult putResult = ossClientStatic.putObject(bucketName, fileName, instream, objectMetadata);
            // 解析结果
            resultStr = putResult.getETag();
        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            try {
                if (instream != null) {
                    instream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return resultStr;

    }

    /**
     * 上传图片
     *
     * @param url
     */
    public static void uploadUrl(String fileName, String url) {

        try {
            InputStream instream = new URL(url).openStream();
            upload(fileName, instream);
        } catch (Exception e) {
            e.printStackTrace();

        } finally {

        }
    }

    /**
     * 获得url链接
     *
     * @param key
     * @return
     */
    public static String getUrl(String key, String option) {
        if (StringUtil.isBlank(key))
            return "";
        return "http://" + bucketName + "." + endpoint + "/" + key + option;

    }

    public static String getBaseUrl() {

        return "http://" + bucketName + "." + endpoint + "/";
    }
}

 3.maven需要引入的阿里云oss服务器jar包

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

原文地址:https://www.cnblogs.com/laifw/p/10388602.html

时间: 2024-07-28 23:05:22

Java中使用RestFul接口上传图片到阿里云OSS服务器的相关文章

简单上传图片到阿里云OSS

OSS主要为用户提供数据存储服务,用户可以通过以下操作来处理OSS上的数据: 1.创建.查看.罗列.删除 Bucket: 2.修改.获取Bucket的访问权限: 3.上传.查看.罗列.删除Object/Object Group: 4.访问时支持If-Modified-Since和If-Match等HTTP参数.特点具体如下: 1.易用性:简单易用,便于管理,深度集成数据处理服务: 2.高可靠:多重冗余备份,服务设计可用性不低于99.99%: 3.强安全:多层次安全防护,支持跨区域复制.异地容灾机

上传图片到阿里云OSS和获取上传图片的外网url的步骤

<form action="/bcis/api/headImgUpload.json" method="post" enctype="multipart/form-data">     <input type="file" name="file">     <input type="submit" value="提交"> </

vue中上传图片至阿里云oss

1.开通阿里云的oss服务这些这里就不多做介绍了 2.登入阿里云的后台管理系统创建一个Bucket 3.在后台管理系统中进入访问控制 4.点击用户管理->新建用户->填写相关信息,就生成了下图3 5.点击生成用户右侧的授权,添加如图的授权策略 6.点击角色管理->新建角色,然后创建了一个如下图的H5ROULE角色 7.点击右侧授权,并选择如下图的授权策略 8.在vue组件中使用 <template> <div class="upload"> &

上传图片到阿里云OSS的步骤

啥都不说  直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="提交&quo

Java下载https文件上传到阿里云oss服务

今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 实现自己的证书信任管理器类 /** * @author mazhq * @Title: X509TrustUtiil * @ProjectName: zeus * @Description: 证书信任管理器类 * @date 2019/2/18 15:14 */ public class X509TrustUtil implements X509TrustManager { @Overr

上传图片到阿里云oss

阿里云地址 登录阿里云管理控制台,创建对象存储oss private static final String endpoint = "http://oss-cn-shanghai.aliyuncs.com"; private static final String accessKeyId = PropKit.get("accessKeyId"); private static final String accessKeySecret = PropKit.get(&q

阿里云OSS上传文件模块

1 package com.hughes.bcsc.app.core.util.oss; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.ByteArrayOutputStream; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.IOExceptio

PHP上传文件到阿里云OSS,nginx代理访问

1. 阿里云OSS创建存储空间Bucket(读写权限为:公共读) 2. 拿到相关配置 accessKeyId:********* accessKeySecret:********* endpoint:******** bucket:******** 3.创建 oss.php 上传类 (基于thinkPHP5) <?php namespace app\controller; use OSS\OssClient; class Oss { private static $_instance; priv

Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)

1.此文章主要介绍内容 本文主要介绍怎样利用Nginx lua 实现将阿里云OSS存储空间做到同本地磁盘一样使用.核心是利用Nginx lua 对OSS请求进行签名并利用内部跳转将全部訪问本地Nginx的请求加上OSS 签名转发给OSS,实现本地Nginx无缝衔接阿里云OSS,存储空间无限扩展,存储成本无限下降,数据安全%99.99-- . 2.本篇文章使用到的一些工具技术及怎样学习和获取 1.lua 本文用到的都是一些主要的lua,基本上花半小时阅读下lua的语法就能够轻松理解本文内容 2.N