简单上传(JAVA)

最近更新时间:2022-11-09 17:09:26

通过文件上传

// yourEndpoint填写Bucket所在地域对应的Endpoint。以中国(北京)为例,Endpoint填写为ks3-cn-beijing.ksyuncs.com。如果使用自定义域名,设置endpoint为自定义域名,同时设置domainMode为true
String endpoint = "yourEndpoint";
// 金山云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 创建Ks3ClientConfig 实例。
Ks3ClientConfig config = new Ks3ClientConfig();
// 设置域名
config.setEndpoint(endpoint); 
/**
 * false: (推荐)使用三级域名:{bucketName}.{endpoint}/{objectKey}的形式访问
 * true:  使用二级域名:{endpoint}/{bucketName}/{objectKey}的形式访问
 * 如果domainMode设置为true,则pathStyleAccess可忽略设置
 */
config.setPathStyleAccess(false);

// 创建Ks3Client实例
Ks3 client = new Ks3Client(accessKeyId,accessKeySecret,config);
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
File file = new File("D:\\localpath\\examplefile.txt");
// 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
client.putObject("examplebucket", "exampledir/exampleobject.txt", file);
通过流上传
  • 上传字符串

    以下代码用于将字符串上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

    // yourEndpoint填写Bucket所在地域对应的Endpoint。以中国(北京)为例,Endpoint填写为ks3-cn-beijing.ksyuncs.com。如果使用自定义域名,设置endpoint为自定义域名,同时设置domainMode为true
    String endpoint = "yourEndpoint";
    // 金山云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
    String accessKeyId = "yourAccessKeyId";
    String accessKeySecret = "yourAccessKeySecret";
    // 创建Ks3ClientConfig 实例。
    Ks3ClientConfig config = new Ks3ClientConfig();
    // 设置域名
    config.setEndpoint(endpoint); 
    /**
     * false: (推荐)使用三级域名:{bucketName}.{endpoint}/{objectKey}的形式访问
     * true:  使用二级域名:{endpoint}/{bucketName}/{objectKey}的形式访问
     * 如果domainMode设置为true,则pathStyleAccess可忽略设置
     */
    config.setPathStyleAccess(false);
    
    // 创建Ks3Client实例
    Ks3 client = new Ks3Client(accessKeyId,accessKeySecret,config);
    
    // 填写字符串。
    String content = "Hello KS3";
    // 设置上传文件的meta信息
    ObjectMetadata metadata = new ObjectMetadata();
    // 上传文件时可以设置元数据
    // 设置将要上传的object的用户元数据。当下载文件的时候,返回的header中将会带上设置的用户元数据。
    // meta.setUserMeta("x-kss-meta-example", "example");
    // 设置将要上传的object的元数据。
    // 如果用户设置了Content-Type,那么在下载的时候,返回的header中将会带上Content-Type:{设置的值} 。建议根据文件实际类型做相应设置,方便浏览器识别。
    // meta.setContentType("text/html");
    
    // 设置服务端加密
    // meta.setSseAlgorithm("AES256");
    
    
    // 创建PutObjectRequest对象。
    // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
    PutObjectRequest putObjectRequest = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", new ByteArrayInputStream(content.getBytes()), metadata);
    
    // 设置用户提供key的服务端加密
    // 生成一个秘钥,这个秘钥需要自己保存好,加密解密都需要
    // KeyGenerator symKeyGenerator = KeyGenerator.getInstance("AES");
    // symKeyGenerator.init(256); 
    // SecretKey symKey = symKeyGenerator.generateKey();
    // SSECustomerKey ssec = new SSECustomerKey(symKey);
    // putObjectRequest.setSseCustomerKey(ssec);
    
    // 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。
    // putObjectRequest.setStorageClass(StorageClass.Standard);
    // putObjectRequest.setCannedAcl(CannedAccessControlList.Private);
    
    // 上传字符串。
    client.putObject(putObjectRequest);            
    
  • 上传Byte数组

    以下代码用于将Byte数组上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

    // yourEndpoint填写Bucket所在地域对应的Endpoint。以中国(北京)为例,Endpoint填写为ks3-cn-beijing.ksyuncs.com。如果使用自定义域名,设置endpoint为自定义域名,同时设置domainMode为true
    String endpoint = "yourEndpoint";
    // 金山云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
    String accessKeyId = "yourAccessKeyId";
    String accessKeySecret = "yourAccessKeySecret";
    // 创建Ks3ClientConfig 实例。
    Ks3ClientConfig config = new Ks3ClientConfig();
    // 设置域名
    config.setEndpoint(endpoint); 
    /**
     * false: (推荐)使用三级域名:{bucketName}.{endpoint}/{objectKey}的形式访问
     * true:  使用二级域名:{endpoint}/{bucketName}/{objectKey}的形式访问
     * 如果domainMode设置为true,则pathStyleAccess可忽略设置
     */
    config.setPathStyleAccess(false);
    
    // 创建Ks3Client实例
    Ks3 client = new Ks3Client(accessKeyId,accessKeySecret,config);
    
    // 填写Byte数组。
    byte[] content = "Hello KS3".getBytes();
    // 设置上传文件的meta信息
    ObjectMetadata metadata = new ObjectMetadata();
    // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
    client.putObject("examplebucket", "exampledir/exampleobject.txt", new ByteArrayInputStream(content), metadata);
    
  • 上传网络流

    以下代码用于将网络流上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

    // yourEndpoint填写Bucket所在地域对应的Endpoint。以中国(北京)为例,Endpoint填写为ks3-cn-beijing.ksyuncs.com。如果使用自定义域名,设置endpoint为自定义域名,同时设置domainMode为true
    String endpoint = "yourEndpoint";
    // 金山云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
    String accessKeyId = "yourAccessKeyId";
    String accessKeySecret = "yourAccessKeySecret";
    // 创建Ks3ClientConfig 实例。
    Ks3ClientConfig config = new Ks3ClientConfig();
    // 设置域名
    config.setEndpoint(endpoint); 
    /**
     * false: (推荐)使用三级域名:{bucketName}.{endpoint}/{objectKey}的形式访问
     * true:  使用二级域名:{endpoint}/{bucketName}/{objectKey}的形式访问
     * 如果domainMode设置为true,则pathStyleAccess可忽略设置
     */
    config.setPathStyleAccess(false);
    
    // 创建Ks3Client实例
    Ks3 client = new Ks3Client(accessKeyId,accessKeySecret,config);
    
    // 填写网络流地址。
    InputStream inputStream = new URL("https://www.ksyun.com").openStream();
    // 设置上传文件的meta信息
    ObjectMetadata metadata = new ObjectMetadata();
    // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
    client.putObject("examplebucket", "exampledir/exampleobject.txt", inputStream, metadata);
    

设置回调

如果用户设置了回调,那么当文件即将上传成功时,KS3将会使用POST的方式调用用户提供的回调地址,如果调用成功且用户处理成功【用户处理成功指返回{“result”:true}给KS3,处理失败返回{“result”:false}),那么文件才会真正的上传成功,如果调用失败或者用户处理失败,那么文件最终会上传失败】。用户可以设置KS3回调时的body,最后KS3将会把用户提供的参数组织成json格式返回给用户。在下面示例中,KS3回调时的body为

{
	"bucket": <实际存储的bucket>,
	"createTime": <文件创建时间>,
	"etag": <文件的etag,
	即文件的MD5经hex处理后的值>,
	"key": <文件实际保持的key>,
	"mimType": <文件的Content-Type>,
	"objectSize": <文件的字节数大小>,
	"time": "20150222"
}

示例代码:

// yourEndpoint填写Bucket所在地域对应的Endpoint。以中国(北京)为例,Endpoint填写为ks3-cn-beijing.ksyuncs.com。如果使用自定义域名,设置endpoint为自定义域名,同时设置domainMode为true
String endpoint = "yourEndpoint";
// 金山云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 创建Ks3ClientConfig 实例。
Ks3ClientConfig config = new Ks3ClientConfig();
// 设置域名
config.setEndpoint(endpoint); 
/**
 * false: (推荐)使用三级域名:{bucketName}.{endpoint}/{objectKey}的形式访问
 * true:  使用二级域名:{endpoint}/{bucketName}/{objectKey}的形式访问
 * 如果domainMode设置为true,则pathStyleAccess可忽略设置
 */
config.setPathStyleAccess(false);

// 创建Ks3Client实例
Ks3 client = new Ks3Client(accessKeyId,accessKeySecret,config);
// 创建回调配置
CallBackConfiguration config = new CallBackConfiguration();
config.setCallBackUrl("http://10.4.2.38:19090/");//KS3服务器回调的地址
// 以下为KS3服务器访问http://10.4.2.38:19090/时body中的参数
Map<String,MagicVariables> magicVariables = new HashMap<String,MagicVariables>();
magicVariables.put("bucket", MagicVariables.bucket);
magicVariables.put("createTime", MagicVariables.createTime);
magicVariables.put("etag", MagicVariables.etag);
magicVariables.put("key", MagicVariables.key);
magicVariables.put("mimeType", MagicVariables.mimeType);
magicVariables.put("objectSize", MagicVariables.objectSize);
// 设置魔法变量
config.setBodyMagicVariables(magicVariables);
// 用户可以自己定义返回的参数。
Map<String,String> kssVariables = new HashMap<String,String>();
kssVariables.put("time", "20150222");
// 填写字符串。
String content = "Hello KS3";
// 上传文件请求
PutObjectRequest putObjectRequest = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", new ByteArrayInputStream(content.getBytes()), metadata);
// 设置回调配置
request.setCallBackConfiguration(config);
// 回调上传字符串
client.putObject(putObjectRequest);   

注意:

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈