【发布时间】:2021-01-20 16:07:18
【问题描述】:
我的应用程序中有一个 ACTION_GET_CONTENT 意图,我需要将选择的文件(会有不同的文件、ppt、doc...)放在 java.io 文件中。
我能够获取数据并将其放入 android.net Uri。有没有办法从这个 Uri 创建一个 java 文件?
我需要它是一个文件,以便使用谷歌驱动器 API 将它上传到谷歌驱动器
这是上传到驱动器的代码,我需要将uri转换为临时文件,以便将其作为该方法的javaFile传递
public Task<File> uploadFileWithMetadata(java.io.File javaFile, boolean isSlide, @Nullable final String folderId, PostFileHolder postFileHolder) {
return Tasks.call(mExecutor, () -> {
Log.i("upload file", "chegou" );
String convertTo; // string to convert to gworkspace
if(isSlide){
convertTo = TYPE_GOOGLE_SLIDES;
}
else{
convertTo = TYPE_GOOGLE_DOCS;
}
List<String> folder;
if (folderId == null) {
folder = Collections.singletonList("root");
} else {
folder = Collections.singletonList(folderId);
}
File metadata = new File()
.setParents(Collections.singletonList(folderId))
.setName(postFileHolder.getDisplayName())
.setMimeType(convertTo);
Log.i("convert to: ", convertTo );
// the convert to is the mimeType of the file, withg gworkspace it is a gdoc or gslide, with others is the regular mimetype
FileContent mediaContent = new FileContent(postFileHolder.getConvertTo(), javaFile);
Log.i("media content", "chegou" );
// até aqui com gworkspace chega
File uploadedFile = mDriveService.files().create(metadata, mediaContent)
.setFields("id")
.execute();
Log.i("File ID: " , uploadedFile.getId());
return uploadedFile;
});
}
这是我获取 Uri 的代码
case REQUEST_CODE_FILE_PICKER:
// get uri from file picked
Uri url = data.getData();
break;
}
【问题讨论】:
-
考虑使用FileUtils
-
我试过了,没用:(
-
need to storage the picked file不清楚你想要什么。该文件已存储。否则无法采摘。 -
@blackapps 你好!刚刚更新了问题!我需要的是使用用户选择的文件创建一个 jav.io 文件
-
您不需要文件实例来上传到谷歌驱动器。您可以使用该 uri。
标签: java android android-studio google-drive-api