oss上传图片

layui上传组件实战
<div class="layui-form-item">
    <label class="layui-form-label">图标</label>
    <div class="layui-input-inline">
        <div class="layui-upload">
            <button type="button" class="layui-btn" id="img_b"><i class="layui-icon"></i>上传</button>
            <div class="layui-upload-list">
                <img class="layui-upload-img" id="img_view" style="width: 200px;height: 100%;">
                <input hidden id="img_v" name="bank_icon"/>
                <p id="test-upload-demoText"></p>
            </div>
        </div>
    </div>
</div>

 

upload.render({
    elem: '#img_b'
    , url: setter.live_domain + '/upload/oss?path=bankList'
    , method: 'post'
    , data: {
        type: 'image'
    }
    , accept: 'file',
    before: function (obj) {
        //预读本地文件示例,不支持ie8
        obj.preview(function (index, file, result) {
            $('#img_view').attr('src', result); //图片链接(base64)
        });
    },
    done: function (res) {
        $('#img_v').val(res.url);
        $('#img_v').val(res.data);
        layer.msg('上传成功');
    },
    error: function () {
        layer.msg('上传失败');
    }
});

 

 

 

public String upload( @RequestParam( "file" ) MultipartFile file, @RequestParam( "path" ) String path ) throws IOException {
   String fileName = file.getOriginalFilename();
   String fileKey  = path + "/" + fileName;
   InputStream inputStream =file.getInputStream()
   ServerOss serverOss = this.effect();
   // 创建OSSClient实例
   OSS ossClient = new OSSClientBuilder().build( serverOss.getEndpoint(), serverOss.getAccessKey(),serverOss.getAccessSecret() );
   // 上传文件流
   ossClient.putObject( serverOss.getBucket(), fileKey, inputStream );
   // 关闭client
   ossClient.shutdown();
   return "https://" + serverOss.getVhost() + "/" + fileKey;
}

 

 

serverOss里的字段

/**
 * oss 服务key
 */
@TableField
private String accessKey;

/**
 * oss 服务密钥
 */
@TableField
private String accessSecret;

/**
 * 访问域名
 */
@TableField
private String endpoint;

/**
 * 文件存储
 */
@TableField
private String bucket;

/**
 * 加速域名
 */
@TableField
private String vhost;

 

Java实现OSS上传图片,通常借助阿里云OSS对象存储服务。以下是实现此功能的详细步骤及示例代码: ### 准备工作 1. **开通服务**:进入[阿里云官网](https://www.aliyun.com/),注册并登录账号,打开控制台,搜索“对象存储OSS”并开通该服务 [^2]。 2. **控制台操作**:创建Bucket存储空间,可进行简单测试 [^2]。 3. **使用RAM子用户**:进入子用户管理页面,添加用户,获取子用户key并设置用户权限 [^2]。 4. **获取必要信息**:从阿里云控制台获取ACCESS_KEY_ID、ACCESS_KEY_SECRET,明确BUCKET_NAME、your - endpoint(例如http://oss-cn-beijing.aliyuncs.com),还可按需设置图片存储目录IMAGE_DIRECTORY [^3]。 5. **引入依赖**:确保项目中引入阿里云Java SDK的相关依赖。若使用Maven项目,在`pom.xml`文件中添加如下依赖: ```xml <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.15.1</version> </dependency> ``` ### 代码示例 ```java import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import java.io.File; public class OSSImageUploader { // 阿里云的访问密钥ID private static final String ACCESS_KEY_ID = "your-access-key-id"; // 阿里云的访问密钥Secret private static final String ACCESS_KEY_SECRET = "your-access-key-secret"; // OSS存储桶的名称 private static final String BUCKET_NAME = "your-bucket-name"; // OSS服务的Endpoint private static final String ENDPOINT = "your-endpoint"; // 图片存储目录 private static final String IMAGE_DIRECTORY = "images/"; public static void uploadImage(String localFilePath, String objectName) { // 创建OSSClient实例 OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET); try { // 上传文件 ossClient.putObject(BUCKET_NAME, IMAGE_DIRECTORY + objectName, new File(localFilePath)); System.out.println("图片上传成功!"); } catch (Exception e) { System.out.println("图片上传失败:" + e.getMessage()); } finally { // 关闭OSSClient ossClient.shutdown(); } } public static void main(String[] args) { // 本地图片文件的路径 String localFilePath = "path/to/your/local/image.jpg"; // 上传OSS后的对象名称 String objectName = "example.jpg"; uploadImage(localFilePath, objectName); } } ``` ### 代码解释 1. **常量定义**:定义了访问OSS所需的常量,包括ACCESS_KEY_ID、ACCESS_KEY_SECRET、BUCKET_NAME、ENDPOINT和IMAGE_DIRECTORY [^3]。 2. **uploadImage方法**:该方法接收本地图片文件路径和上传OSS后的对象名称作为参数。在方法内部,创建OSSClient实例,调用`putObject`方法上传文件,最后关闭OSSClient [^5]。 3. **main方法**:调用`uploadImage`方法,传入本地图片文件路径和对象名称,实现图片上传。 ### 注意事项 - 请将代码中的`your - access - key - id`、`your - access - key - secret`、`your - bucket - name`、`your - endpoint`和`path/to/your/local/image.jpg`替换为实际的值 [^3]。 - 确保本地文件路径和文件真实存在,且有读取权限。 - 若上传过程中出现权限问题,请检查子用户的权限设置。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值