图片上传到腾讯云 java_腾讯云图片上传

packagecom.custome;importcom.qcloud.cos.COSClient;importcom.qcloud.cos.ClientConfig;importcom.qcloud.cos.auth.BasicCOSCredentials;importcom.qcloud.cos.auth.COSCredentials;importcom.qcloud.cos.model.ObjectMetadata;importcom.qcloud.cos.model.PutObjectResult;importcom.qcloud.cos.region.Region;importorg.springframework.web.multipart.MultipartFile;import java.io.*;importjava.net.URL;importjava.util.Date;importjava.util.Random;public classCOSClientUtil {//todo 这些变量信息自行到 腾讯云对象存储控制台 获取

privateCOSClient cOSClient;private static final String ENDPOINT = "test.com"; //用户可以指定域名,不指定则为默认生成的域名//secretId

private static final String secretId = "AKIDCJ";//secretKey

private static final String secretKey = "CD7";//存储通名称

private static final String bucketName = "test";//公有读私有写//1 初始化用户身份信息(secretId, secretKey)

private static COSCredentials cred = newBasicCOSCredentials(secretId, secretKey);//2 设置bucket的区域, COS地域的简称请参照https://cloud.tencent.com/document/product/436/6224

private static ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing-1"));//3 生成cos客户端

private static COSClient cosclient = newCOSClient(cred, clientConfig);publicCOSClientUtil() {

cOSClient= newCOSClient(cred, clientConfig);

}/*** 销毁*/

public voiddestory() {

cOSClient.shutdown();

}/*** 上传图片

*

*@paramurl*/

public void uploadImg2Cos(String url) throwsException {

File fileOnServer= newFile(url);

FileInputStream fin;try{

fin= newFileInputStream(fileOnServer);

String[] split= url.split("/");this.uploadFile2Cos(fin, split[split.length - 1]);

}catch(FileNotFoundException e) {throw new Exception("图片上传失败");

}

}public String uploadFile2Cos(MultipartFile file) throwsException {if (file.getSize() > 10 * 1024 * 1024) {throw new Exception("上传图片大小不能超过10M!");

}//图片名称

String originalFilename =file.getOriginalFilename();

System.out.println("originalFilename = " +originalFilename);//图片后缀

String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();

System.out.println("substring = " +substring);

Random random= newRandom();//生成新的图片名称(随机数0-9999+系统当前时间+上传图片名)

String name = random.nextInt(10000) + System.currentTimeMillis() + "_" +substring;try{

InputStream inputStream=file.getInputStream();this.uploadFile2Cos(inputStream, name);returnname;

}catch(Exception e) {throw new Exception("图片上传失败");

}

}/*** 获得图片路径

*

*@paramfileUrl

*@return

*/

publicString getImgUrl(String fileUrl) {returngetUrl(fileUrl);

}/*** 获得url链接

*

*@paramkey

*@return

*/

publicString getUrl(String key) {//设置URL过期时间为10年 3600l* 1000*24*365*10

Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10);//生成URL

URL url =cOSClient.generatePresignedUrl(bucketName, key, expiration);if (url != null) {returnurl.toString();

}return null;

}/*** 上传到COS服务器 如果同名文件会覆盖服务器上的

*

*@paraminstream

* 文件流

*@paramfileName

* 文件名称 包括后缀名

*@return出错返回"" ,唯一MD5数字签名*/

publicString uploadFile2Cos(InputStream instream, String fileName) {

String ret= "";try{//创建上传Object的Metadata

ObjectMetadata objectMetadata = newObjectMetadata();

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 =cOSClient.putObject(bucketName, fileName, instream, objectMetadata);

ret=putResult.getETag();

}catch(IOException e) {

e.printStackTrace();

}finally{try{if (instream != null) {

instream.close();

}

}catch(IOException e) {

e.printStackTrace();

}

}returnret;

}/*** Description: 判断Cos服务文件上传时文件的contentType

*

*@paramfilenameExtension 文件后缀

*@returnString*/

public staticString getcontentType(String filenameExtension) {if (filenameExtension.equalsIgnoreCase("bmp")) {return "image/bmp";

}if (filenameExtension.equalsIgnoreCase("gif")) {return "image/gif";

}if (filenameExtension.equalsIgnoreCase("jpeg") || filenameExtension.equalsIgnoreCase("jpg")|| filenameExtension.equalsIgnoreCase("png")) {return "image/jpeg";

}if (filenameExtension.equalsIgnoreCase("html")) {return "text/html";

}if (filenameExtension.equalsIgnoreCase("txt")) {return "text/plain";

}if (filenameExtension.equalsIgnoreCase("vsd")) {return "application/vnd.visio";

}if (filenameExtension.equalsIgnoreCase("pptx") || filenameExtension.equalsIgnoreCase("ppt")) {return "application/vnd.ms-powerpoint";

}if (filenameExtension.equalsIgnoreCase("docx") || filenameExtension.equalsIgnoreCase("doc")) {return "application/msword";

}if (filenameExtension.equalsIgnoreCase("xml")) {return "text/xml";

}return "image/jpeg";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用阿里云的Java SDK来实现将音频InputStream上传到OSS。下面是一个示例代码: ```java import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; public class OSSUploader { private static final String endpoint = "your_endpoint"; private static final String accessKeyId = "your_access_key_id"; private static final String accessKeySecret = "your_access_key_secret"; private static final String bucketName = "your_bucket_name"; public static void upload(InputStream inputStream, String objectName) { OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); try { ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(inputStream.available()); metadata.setCacheControl("no-cache"); metadata.setHeader("Pragma", "no-cache"); metadata.setContentType("audio/mp3"); // 根据实际情况修改contentType PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream, metadata); ossClient.putObject(putObjectRequest); System.out.println("音频上传成功"); } catch (IOException e) { System.out.println("音频上传失败:" + e.getMessage()); } finally { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } ossClient.shutdown(); } } public static void main(String[] args) { // 将你的音频InputStream传递给upload方法 // 例如:InputStream inputStream = new FileInputStream("your_audio_file_path"); // upload(inputStream, "your_object_name"); } } ``` 在上面的代码中,你需要将`your_endpoint`、`your_access_key_id`、`your_access_key_secret`和`your_bucket_name`替换为你的OSS配置信息。然后,你可以调用`upload`方法将音频InputStream上传到指定的OSS存储桶中,其中`objectName`参数是你希望在OSS中保存的对象名称。 请注意,这只是一个简单的示例代码,你需要根据自己的实际需求进行修改和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值