.Net工作在java应用程序上的人
我上传时使用以下示例作为我的起点(我有这个工作)。这表明使用FileContent需要一个java.io.File,它不包含实际文件只有指向实际文件的指针。
我们正在从一个网站上传并试图插入到驱动器中,我更喜欢使用像.Net示例这样的内存Stream。我在查看FileContent类时看不到它。所以我的任务是:有没有办法在内存中的Google云端硬盘中插入文件,而不是先在硬盘上插入?
private static File insertFile(Drive service, String title, String description,
String parentId, String mimeType, String filename) {
// File's metadata.
File body = new File();
body.setTitle(title);
body.setDescription(description);
body.setMimeType(mimeType);
// Set the parent folder.
if (parentId != null && parentId.length() > 0) {
body.setParents(
Arrays.asList(new ParentReference().setId(parentId)));
}
// File's content.
java.io.File fileContent = new java.io.File(filename);
FileContent mediaContent = new FileContent(mimeType, fileContent);
try {
File file = service.files().insert(body, mediaContent).execute();
// Uncomment the following line to print the File ID.
// System.out.println("File ID: " + file.getId());
return file;
} catch (IOException e) {
System.out.println("An error occured: " + e);
return null;
}
}
答案 0 :(得分:0)
覆盖AbstractInputStream构建您自己的FileContent
package com;
import java.io.IOException;
import java.io.InputStream;
import com.google.api.client.http.AbstractInputStreamContent;
import com.google.api.client.util.Preconditions;
public class FileContent extends AbstractInputStreamContent {
private InputStream inputStream = null;
private long inputLength = 0;
public FileContent(String type, InputStream pInputStream) throws IOException {
super(type);
this.inputStream = Preconditions.checkNotNull(pInputStream);
this.inputLength = this.inputStream.available();
}
public long getLength() throws IOException {
return this.inputLength;
}
public boolean retrySupported() {
return false;
}
@Override
public InputStream getInputStream() throws IOException {
return this.inputStream;
}
}