2012-01-21 10 views
0

Google Docに変換せずにzipファイルをアップロードするためのコードスニペットを次のように持っています。Google Docへのアップロード中に同じファイル名でzipファイルを上書きする方法

package sample.docs; 

import com.google.gdata.client.docs.*; 
import com.google.gdata.data.docs.*; 
import com.google.gdata.util.*; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import com.google.gdata.client.media.ResumableGDataFileUploader; 
import com.google.gdata.client.uploader.FileUploadData; 
import com.google.gdata.client.uploader.ProgressListener; 
import com.google.gdata.client.uploader.ResumableHttpFileUploader; 
import com.google.gdata.data.media.MediaFileSource; 
import java.io.File; 
import java.net.URL; 
import java.util.concurrent.CountDownLatch; 
import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 
import java.util.concurrent.TimeUnit; 

public class DocumentListDemo { 

    private static class FileUploadProgressListener implements ProgressListener { 

     final CountDownLatch countDownLatch = new CountDownLatch(1); 

     @Override 
     public synchronized void progressChanged(ResumableHttpFileUploader uploader) 
     { 
      final String fileId = ((FileUploadData) uploader.getData()).getFileName(); 
      switch(uploader.getUploadState()) { 
      case COMPLETE: 
      case CLIENT_ERROR: 
       countDownLatch.countDown(); 
       System.out.println(fileId + ": Completed"); 
       break; 

      case IN_PROGRESS: 
       System.out.println(fileId + ":" + String.format("%3.0f", uploader.getProgress() * 100) + "%"); 
       break; 

      case NOT_STARTED: 
       System.out.println(fileId + ":" + "Not Started"); 
       break; 
      } 
     } 

     public void await() throws InterruptedException { 
      countDownLatch.await(); 
     } 
    } 

    public static void main(String[] args) throws MalformedURLException, IOException, ServiceException, InterruptedException, DocumentListException { 
     int MAX_CONCURRENT_UPLOADS = 10; 
     int PROGRESS_UPDATE_INTERVAL = 1000; 
     int DEFAULT_CHUNK_SIZE = 10485760; 

     DocsService client = new DocsService("JStock"); 
     client.setUserCredentials("[email protected]", "this-is-my-password"); 

     // Create a listener 
     FileUploadProgressListener listener = new FileUploadProgressListener(); 

     // Pool for handling concurrent upload tasks 
     ExecutorService executor = Executors.newFixedThreadPool(MAX_CONCURRENT_UPLOADS); 

     File file = new File("c:\\Pictures.zip"); 
     String contentType = DocumentListEntry.MediaType.fromFileName(file.getName()).getMimeType(); 
     MediaFileSource mediaFile = new MediaFileSource(file, contentType); 
     URL createUploadUrl = new URL("https://docs.google.com/feeds/upload/create-session/default/private/full"); 
     ResumableGDataFileUploader uploader = new ResumableGDataFileUploader.Builder(client, createUploadUrl, mediaFile, null) 
      .title(mediaFile.getName()) 
      .chunkSize(DEFAULT_CHUNK_SIZE).executor(executor) 
      .trackProgress(listener, PROGRESS_UPDATE_INTERVAL) 
      .build(); 
     uploader.start(); 


     // Wait for completion. 
     listener.await(); 

     // Thread clean up. 
     executor.shutdownNow(); 
     executor.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); 

     System.out.println("done!");    
    } 
} 

上記のコードをコンパイルするには、次の4つのライブラリが必要です。

enter image description here

しかし、私は何度も何度も同じファイル名でファイルをアップロードしようとすると、以前アップロードされたファイルを上書きされません、実現しています。

上記のコードを4回実行した場合の結果です。

enter image description here

私はGoogleドキュメントにアップロードする時に、同じファイル名でファイルを上書きすることができますどのように、知っているかもしれませんか?

答えて

0

ファイルを上書きする方法は次のとおりです。

// Rename and overwrite. 
    documentListEntry.setTitle(new PlainTextConstruct(getGoogleDocTitle(checksum, date, version))); 
    uploader = new ResumableGDataFileUploader.Builder(client, createUploadUrl, mediaFile, documentListEntry) 
    .title(getGoogleDocTitle(checksum, date, version)) 
    .chunkSize(DEFAULT_CHUNK_SIZE).executor(executor) 
    .trackProgress(listener, PROGRESS_UPDATE_INTERVAL).requestType(ResumableGDataFileUploader.RequestType.UPDATE) 
    .build(); 

完全なコードスニペットを取得するには、saveToGoogleDocユーティリティ関数を参照してください。

関連する問題