获取上传文件的可共享链接到Android中的谷歌驱动器

时间:2017-09-16 09:53:38

标签: android google-drive-android-api

我使用Android代码将图像文件上传到Google云端硬盘。我想要的是获取我上传的文件的可共享链接。下面是我上传文件的代码,

OutputStream outputStream = driveContents.getOutputStream();
Bitmap image = MediaStore.Images.Media.getBitmap(MainActivity.this.getContentResolver(), uri);
ByteArrayOutputStream bitmapStream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, bitmapStream);
outputStream.write(bitmapStream.toByteArray());
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
        .setTitle(imgFile.getName())
        .setMimeType("image/jpeg")
        .setStarred(true).build();

// create a file in root folder
Drive.DriveApi.getRootFolder(mGoogleApiClient)
        .createFile(mGoogleApiClient, changeSet, driveContents)
        .setResultCallback(fileCallback);

(uri是上面代码中我的图像文件的SD卡路径。)

我收到了以下回调的结果,

final private ResultCallback<DriveFolder.DriveFileResult> fileCallback = new
    ResultCallback<DriveFolder.DriveFileResult>() {
        @Override
        public void onResult(DriveFolder.DriveFileResult result) {
            if (result.getStatus().isSuccess()) {
                Toast.makeText(MainActivity.this, "File uploaded.", Toast.LENGTH_SHORT).show();
                clipboard.setPrimaryClip(clip);
            }
            return;
        }
    };

请帮助我获取我上传文件的链接。

1 个答案:

答案 0 :(得分:0)

以下是与您的查询相关的SO post

  

从Google云端硬盘下载文件:

     

要通过链接下载Google云端硬盘文件,请尝试此操作(来自this tutorial):

     

https://drive.google.com/uc?export=download&id=FILE_ID

     

只需将FILE_ID替换为驱动器中找到的原始文件ID即可   URL。

还有一些进一步的阅读也来自同一篇文章。

  

Additonal notes:

     

您可以使用DRIVE REST API

下载文件      

要下载文件,您需要向其发出授权的HTTP GET请求   文件的资源URL并包含查询参数alt = media。对于   例如:

function findFiles(auth){
var obj ={};
var key = 'files';
obj[key]=[];
var drive = google.drive('v3');
drive.files.list({
                auth: auth,
                folderId: '****************',
                q: "mimeType contains 'application/pdf' and trashed = false"
                },
  function(err,response){
    var f = response.files;
    if (f.length == 0) {
    console.log('No files found.');
    }else {
        var i;
        for (i = 0; i < f.length; i++) {
        var file = f[i];
        //console.log('%s (%s)', file.name, file.id);
        obj[key].push(file.name + ' ' + file.id);
        }
        console.log(obj);
        return obj;
  }
                  });

}
     

下载文件要求用户至少具有读取权限。   此外,您的应用必须获得允许的范围授权   阅读文件内容。例如,使用的应用程序   drive.readonly.metadata范围无权下载   文件内容。拥有编辑权限的用户可以限制下载   通过将viewersCanCopyContent字段设置为true来使用只读用户。