使用Google云存储上传图片

谷歌云存储官网:https://console.cloud.google.com/


1.获取服务账号密钥:官网--左侧导航API和服务--凭据--创建服务账号密钥


2.将下载的Json文件配置到环境变量(配置完成后重启电脑)

A.Windows:

set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>

set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>

set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>

B.Linux:
set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>

set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>

export GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>


3.代码


import com.google.cloud.storage.Acl;
import com.google.cloud.storage.Acl.Role;
import com.google.cloud.storage.Acl.User;
import com.google.cloud.storage.BlobInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;


import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.springframework.web.multipart.MultipartFile;


import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
/**
 * 
 * @author lin
 *
 */
public class GoogleUpdateFileUtil {
 
// 存储空间
private final static String bucketName = "btc666com_001";

//服务
private static Storage storage = null;
 
//图片的存储路径
private static String imgUrl = null;
 
 static {
    storage = StorageOptions.getDefaultInstance().getService();
 }
 
 
/**
* 上传图片到Google云存储
* @param file : 文件
* @param prefix : 文件名前缀 
* @return 
* @throws IOException
*/
@SuppressWarnings("deprecation")
public static String uploadFile(MultipartFile file,String prefix) throws IOException   {
    //文件名  
   DateTimeFormatter dtf = DateTimeFormat.forPattern("-YYYYMMddHHmmss");
   DateTime dt = DateTime.now(DateTimeZone.UTC);
   String dtString = dt.toString(dtf);
   final String fileName =prefix + dtString+file.getOriginalFilename().substring(file.getOriginalFilename().indexOf("."),file.getOriginalFilename().length());
        System.err.println("fileName:" + fileName);
  
       //上传文件 
   BlobInfo blobInfo =
       storage.create(
           BlobInfo
               .newBuilder(bucketName, fileName)
               // Modify access list to allow all users with link to read file
               .setAcl(new ArrayList<>(Arrays.asList(Acl.of(User.ofAllUsers(), Role.READER))))  
               .setContentType("image/jpeg")
               .build(),
           file.getInputStream());
     
     //System.out.println("下载连接:"+blobInfo.getMediaLink());
   imgUrl = "https://storage.googleapis.com/" + bucketName + "/" + fileName;
 
   return imgUrl;
   
 }
 
}


4.maven坐标:

    <!-- 谷歌云存储 -->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
<version>1.6.0</version>
</dependency>
     <!-- 谷歌云存储 --> 

  







set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果你想使用云存储来保存你的图片,你可以按照以下步骤开展这项功能: 1. 选择云存储服务提供商:首先,选择一个适合你的需求的云存储服务提供商。常见的云存储服务提供商包括Amazon S3、Google Cloud Storage、阿里云OSS等。比较它们的价格、性能、可用性和便利性,并选择最适合你的服务商。 2. 注册并创建存储桶(Bucket):注册一个账户并登录到你选择的云存储服务提供商的控制台。在控制台中,创建一个存储桶(Bucket),这将是存储你图片的主要容器。 3. 设置访问权限:为了确保你的图片可以被访问,你需要设置适当的访问权限。通常,云存储服务提供商会提供简单的权限管理界面,你可以在控制台中设置桶级别或对象级别的权限。 4. 集成SDK或API:根据你选择的云存储服务提供商,下载并集成相应的SDK或使用API。这些工具将帮助你通过编程方式与云存储服务进行交互,包括上传、下载、删除和获取图片等操作。 5. 实现图片上传和访问功能:在你的前端应用中,添加图片上传功能,并使用云存储服务提供商的SDK或API将图片上传到云存储中。同时,根据需要实现图片的访问功能,例如显示上传的图片、生成图片链接等。 6. 考虑图片处理和优化:除了存储图片,一些云存储服务提供商还提供了图片处理和优化功能,如缩放、裁剪、压缩等。你可以根据需求使用这些功能来优化你的图片库应用。 记住,使用云存储来保存图片需要你在云存储服务上支付相应的费用,因此在使用之前,请确保你了解相关的定价和费用结构。 希望这些步骤能帮助你开展使用云存储保存图片的功能!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值