为了账号安全,请及时绑定邮箱和手机立即绑定

将 xml 文件上传到 Google Cloud Storage 时出错

将 xml 文件上传到 Google Cloud Storage 时出错

至尊宝的传说 2022-05-25 10:02:43
我想将文件上传到 Google Cloud Storage,但是出现如下错误:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkNotNull我要上传到 Google Cloud Storage 的 xml 文件的格式:<set xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">文件和谷歌存储桶,我想将文件上传到存储桶。字符串文件名 = “data.xml”String fileBucket = "上传文件"; public static void uploadFile(String fileName, String fileBucket)            throws IOException {        final GcsService gcsService = GcsServiceFactory.createGcsService(new RetryParams.Builder()                .initialRetryDelayMillis(10)                .retryMaxAttempts(10)                .totalRetryPeriodMillis(50000)//15000                .build());        gcsService.createOrReplace(                new GcsFilename(fileBucket, fileName),                new GcsFileOptions.Builder().mimeType("application/xml")                        .acl("public-read")                        .cacheControl("public, max-age=0").build());    }
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

要将文件上传到 Google Cloud Storage,您需要这些StorageOptions服务。您可以查看有关Uploading Objects的文档。


这会将Hello, Cloud Storage!字符串上传到blob_name存储桶中名为bucket. 您只需根据项目的需要更改名称。


上传您的本地文件之一。创建一个函数,该函数将读取文件的数据并将它们返回到将数据上传到存储桶的主函数。


我自己和以下代码做了一些编码,成功上传了包含您上面提到的数据的文件。


读取文件的函数:


它将从本地存储(例如 Cloud Shell)中读取文件并返回所有数据。


private String readFile(){

      // The name of the file to open.

        String fileName = "PATH/TO/THE/FILE/THAT/IS/GOING/TO/BE/UPLOADED/FILE_NAME/xml";


        // This will reference one line at a time

        String line = null;

        // This will be the full file after reading

        String output = "";


        try {

            // FileReader reads text files in the default encoding.

            FileReader fileReader = 

                new FileReader(fileName);


            // Always wrap FileReader in BufferedReader.

            BufferedReader bufferedReader = 

                new BufferedReader(fileReader);


            while((line = bufferedReader.readLine()) != null) {

                System.out.println(line);

                output = output + line;

            }   


            // Always close files.

            bufferedReader.close();         

        }

        catch(FileNotFoundException ex) {

            System.out.println(

                output = output + "Unable to open file '" + fileName + "'";         

        }

        catch(IOException ex) {

            System.out.println( 

                output = output + "Error reading file '" + fileName + "'";         

        }


      return output;

  }

上传功能:


它将使用将从文件中读取的所有数据并将它们上传到存储桶中的新文件。文档代码之间的区别在于...readFile().getBytes(UTF_8)...调用位置。我们添加了将返回所有数据以供上传的函数,而不是字符串。


public String uploadFile(){


        String bucket_name = "BUCKET_NAME";

        String file_name = "PATH/TO/WHERE/THE/FILE/WILL/BE/UPLOADED/FILE_NAME.xml"


        Storage storage = StorageOptions.getDefaultInstance().getService();

        BlobId blobId = BlobId.of(bucket_name, file_name);

        BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("text/plain").build();

        Blob blob = storage.create(blobInfo, readFile().getBytes(UTF_8));

}


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信