因此,在我的应用程序中,我需要从用户驱动器中获取文件并将其上传到我的文件中。
我已经搜索过,看来唯一的方法是从用户的驱动器中下载文件,然后将其上传到我的文件中。
我已经解决了所有OAuth2问题,并且能够创建,获取和列出文件。
但是我的问题是,根据Google的文档,我应该将文件下载到声明为OutputStream的ByteArrayOutputStream中,但是当我上传文件时,我应该上传一个java.io文件
有谁知道我如何从下载方法中获取输出流并将其转换为文件以便发送至上传方法?
到目前为止,这是我的代码:
下载文件的代码(我从Google获得)
public Task<java.io.File> downloadFile(PostFileHolder postFileHolder) {
return Tasks.call(mExecutor, () -> {
// Retrieve the metadata as a File object.
Log.i("download file", "chegou");
OutputStream outputStream = new ByteArrayOutputStream();
mDriveService.files().export(postFileHolder.getGoogleId(), "application/pdf")
.executeMediaAndDownloadTo(outputStream);
// I need to use the export method because I will have some docs and slides files
return null;
});
}
这是上传文件的代码:
public Task<File> uploadFileWithMetadata(java.io.File javaFile, String mimeType, boolean isSlide, @Nullable final String folderId) {
return Tasks.call(mExecutor, () -> {
Log.i("upload file", "chegou" );
String convertTo;
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(folder)
.setName(javaFile.getName())
.setMimeType(convertTo);
FileContent mediaContent = new FileContent(convertTo, javaFile);
File uploadedFile = mDriveService.files().create(metadata, mediaContent)
.setFields("id,name,size,createdTime,modifiedTime,starred,thumbnailLink,mimeType")
.execute();
Log.i("File ID: " , uploadedFile.getId());
return uploadedFile;
});
}
谢谢!
您只需使用以下最少的代码即可创建文件。并稍后使用此文件进行上传。
val outputStream = ByteArrayOutputStream() // Your
val byteData = bos.toByteArray()
val mainFile = File("Path with filename")
//write the bytes in file
val fos = FileOutputStream(mainFile)
fos.write(bitmapdata)
fos.flush()
fos.close()
由于您的outputStream被初始化为ByteArrayOutputStream,因此您可以简单地使用cast方法,例如 ((ByteArrayOutputStream) outputStream).toByteArray()
关于路径,您可以将文件保存在内部文件目录或外部存储中的任何位置作为临时文件。我建议您仔细阅读“数据和文件存储概述”以及本教程以获取更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句