使用java api将文件上传到google驱动器

时间:2013-04-26 11:31:50

标签: java google-drive-api

DocsService client = new DocsService("service name");
client.setUserCredentials(username,password);
File file = new File(filename);
URL url = new URL("https://docs.google.com/feeds/default/private/full/?ocr=true&convert=true");
String mimeType =     DocumentListEntry.MediaType.fromFileName(file.getName()).getMimeType();
DocumentEntry newDocument = new DocumentEntry();
newDocument.setTitle(new PlainTextConstruct(file.getName()));
newDocument.setMediaSource(new MediaFileSource(file, mimeType));
//newDocument.setFile(file, mimeType);
newDocument = client.insert(url, newDocument);
System.out.println("uploaded "+file.getName());
JOptionPane.showMessageDialog(null, "uploaded "+file.getName(), "alert", JOptionPane.ERROR_MESSAGE);

使用此代码我上传文件,但该文件作为文档上传。      意味着我上传任何类型的文件作为文档上传到谷歌驱动器

3 个答案:

答案 0 :(得分:3)

据我所知(自从我看了几个月以来),google驱动API已经不支持。 作为解决方法,请考虑安装本机google驱动器共享,并将要上载的文件写入本地映射的共享文件夹。然后它的谷歌驱动器问题来处理上传。

答案 1 :(得分:2)

可以为您提供指导

<input id="file-pdf" type="file" name="file-pdf"> 
<button id="submit-pdf">submit</button>

// Javascript角

$("#submit-pdf").click(function() {
var inputFileImage = document.getElementById("file-pdf");
var file = inputFileImage.files[0];
var data = new FormData();
data.append("file-pdf",file);
$.ajax({
url:   "uploadpdf",
type:  'POST',
cache : false,
data : data,
processData : false,
contentType : false,
dataType: "json",       
success:  function (response) {        
   if(response.success){
      console.log("ok");
   }else{
       console.log("fail");
   }

}
});    
});

for servlet here   保存到驱动器的功能

 //parentId  ID folder drive
 public static File insertFile(GoogleCredential credential,String title, String parentId, String mimeType, String filename, InputStream stream) {

    try {
             Drive driveService = new Drive.Builder(httpTransport, jsonFactory, null).setApplicationName("DRIVE_TEST").setHttpRequestInitializer(credential).build();

            // File's metadata.
            File body = new File();
            body.setTitle(title);
            body.setMimeType(mimeType);

            // Set the parent folder.
            if (parentId != null && parentId.length() > 0) {
              body.setParents(
                  Arrays.asList(new ParentReference().setId(parentId)));
            }

            // File's content.
            InputStreamContent mediaContent = new InputStreamContent(mimeType, new BufferedInputStream(stream));  
            try {
              File file = driveService.files().insert(body, mediaContent).execute();

              return file;
            } catch (IOException e) {
              logger.log(Level.WARNING, "un error en drive service: "+ e);
              return null;
            }

    } catch (IOException e1) {
           // TODO Auto-generated catch block
           e1.printStackTrace();
           return null;
    }

  }

答案 2 :(得分:2)

我知道这个问题已经很老了,但是现在谷歌已经正式支持Java drive api,有一个快速的示例可以开始将Drive API与java应用程序集成。 从here

下载驱动器API客户端jar文件

如果您是从Java SE开发应用程序,请不要忘记将servlet api.jar放在类路径上,否则最终会出现很多错误。