Dosya verilerini yükle

Google Drive API'si, bir dosya oluştururken veya mevcut bir dosyayı güncellerken File. Nasıl oluşturabileceğiniz hakkında bilgi için Yalnızca meta veri dosyası (ör. klasör) için Yalnızca meta veri dosyaları oluşturma başlıklı makaleyi inceleyin.

Gerçekleştirebileceğiniz üç tür yükleme vardır:

  • Basit yükleme (uploadType=media): Bir dosyayı aktarmak için bu yükleme türünü kullanın meta veri sağlamadan küçük medya dosyası (5 MB veya daha küçük) Bir basit yükleme işlemi için Basit bir yükleme gerçekleştirme bölümüne bakın.

  • Çok parçalı yükleme (uploadType=multipart): "Bu yükleme türünü kullanarak şunları yapabilirsiniz: açıklayan meta verilerle birlikte küçük bir dosya (5 MB veya daha küçük) dosyası olarak gönderin. Çok parçalı yükleme yapmak için şuraya bakın: Perform çok parçalı yükleme.

  • Devam ettirilebilir yükleme (uploadType=resumable): Şunlar için bu yükleme türünü kullanın: büyük dosyalar (5 MB'tan büyük) olduğunda ve ağ oluşturma olasılığı yüksek olduğunda Örneğin mobil uygulamadan dosya oluştururken kesintiye uğrar. Devam ettirilebilir Ayrıca, yükleme işlemleri çoğu uygulama için iyi bir seçenektir çünkü ve yükleme başına bir ek HTTP isteği karşılığında minimum maliyetle küçük dosyalar için Devam ettirilebilir yükleme işlemi gerçekleştirmek için Devam ettirilebilir bir yükleme işlemi gerçekleştirme yükleyin.

Google API istemci kitaplıkları aşağıdaki türlerden en az birini uygular: İstemci kitaplığına dokümanlarına göz atın ve türlerin her birini kullanın.

PATCH - PUT karşılaştırmasını kullanın

PATCH HTTP fiili, kısmi dosya kaynağı güncellemesini desteklemektedir. HTTP fiili ise PUT tam kaynak değişimini destekler. Unutmayın: PUT mevcut bir kaynağa yeni alan eklerken zarar veren değişikliklere yol açabilir.

Bir dosya kaynağı yüklerken aşağıdaki yönergeleri kullanın:

  • İlk istek için API referansında belgelenen HTTP fiilini kullan tek istek olduğunda veya basit ya da çok parçalı yüklemelerde kullanılabilir.
  • Devam ettirilebilir bir yükleme işlemine yönelik sonraki tüm istekler için PUT isteği başlatıldı. Bu istekler, çağrılır.

Basit bir yükleme yapın

Basit bir yükleme gerçekleştirmek için files.create yöntemi uploadType=media.

Aşağıda, basit bir yüklemenin nasıl yapılacağı gösterilmektedir:

HTTP

  1. Sorguyla birlikte yöntemin /upload URI'sine bir POST isteği oluşturun uploadType=media parametresi için:

    POST https://www.googleapis.com/upload/drive/v3/files?uploadType=media

  2. Dosyanın verilerini istek gövdesine ekleyin.

  3. Şu HTTP üstbilgilerini ekleyin:

    • Content-Type İlgili nesnenin MIME medya türüne ayarlanır yüklendi.
    • Content-Length Yüklediğiniz bayt sayısına ayarlayın. Şunu kullanıyorsanız: parçalı aktarım kodlamasına sahip değilse bu başlık gerekli değildir.
  4. İsteği gönderin. İstek başarılı olursa sunucu, dosyanın meta verileriyle birlikte HTTP 200 OK durum kodunu döndürür. {HTTP}

ziyaret edin.

Basit bir yükleme yaptığınızda, temel meta veriler ve bazı özellikler oluşturulur. dosyadan türetilir (örneğin, MIME türü veya modifiedTime). Tekliflerinizi otomatikleştirmek ve optimize etmek için ve dosya meta verilerinin uyumlu olmadığı durumlarda, kolayca önemlidir.

Çok parçalı yükleme gerçekleştirme

Çok parçalı yükleme isteği, meta verileri ve verileri aynı isteği gönderin. Gönderdiğiniz veriler tekrar yüklenecek kadar küçükse bu seçeneği kullanın. bağlantısını tamamen kaldırabilirsiniz.

Çok parçalı yükleme yapmak için files.create yöntemi uploadType=multipart.

Aşağıda, çok parçalı yüklemenin nasıl gerçekleştirileceği gösterilmektedir:

Java

drive/snippets/drive_v3/src/main/java/UploadBasic.java
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.FileContent;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.File;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.Arrays;

/* Class to demonstrate use of Drive insert file API */
public class UploadBasic {

  /**
   * Upload new file.
   *
   * @return Inserted file metadata if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static String uploadBasic() throws IOException {
    // Load pre-authorized user credentials from the environment.
    // TODO(developer) - See https://developers.google.com/identity for
    // guides on implementing OAuth2 for your application.
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    Drive service = new Drive.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Drive samples")
        .build();
    // Upload file photo.jpg on drive.
    File fileMetadata = new File();
    fileMetadata.setName("photo.jpg");
    // File's content.
    java.io.File filePath = new java.io.File("files/photo.jpg");
    // Specify media type and file-path for file.
    FileContent mediaContent = new FileContent("image/jpeg", filePath);
    try {
      File file = service.files().create(fileMetadata, mediaContent)
          .setFields("id")
          .execute();
      System.out.println("File ID: " + file.getId());
      return file.getId();
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to upload file: " + e.getDetails());
      throw e;
    }
  }
}

Python

drive/snippets/drive-v3/file_snippet/upload_basic.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaFileUpload


def upload_basic():
  """Insert new file.
  Returns : Id's of the file uploaded

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create drive api client
    service = build("drive", "v3", credentials=creds)

    file_metadata = {"name": "download.jpeg"}
    media = MediaFileUpload("download.jpeg", mimetype="image/jpeg")
    # pylint: disable=maybe-no-member
    file = (
        service.files()
        .create(body=file_metadata, media_body=media, fields="id")
        .execute()
    )
    print(f'File ID: {file.get("id")}')

  except HttpError as error:
    print(f"An error occurred: {error}")
    file = None

  return file.get("id")


if __name__ == "__main__":
  upload_basic()

Node.js

drive/snippets/drive_v3/file_snippets/upload_basic.js
/**
 * Insert new file.
 * @return{obj} file Id
 * */
async function uploadBasic() {
  const fs = require('fs');
  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });
  const service = google.drive({version: 'v3', auth});
  const requestBody = {
    name: 'photo.jpg',
    fields: 'id',
  };
  const media = {
    mimeType: 'image/jpeg',
    body: fs.createReadStream('files/photo.jpg'),
  };
  try {
    const file = await service.files.create({
      requestBody,
      media: media,
    });
    console.log('File Id:', file.data.id);
    return file.data.id;
  } catch (err) {
    // TODO(developer) - Handle error
    throw err;
  }
}

PHP

drive/snippets/drive_v3/src/DriveUploadBasic.php
use Google\Client;
use Google\Service\Drive;
# TODO - PHP client currently chokes on fetching start page token
function uploadBasic()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);
        $fileMetadata = new Drive\DriveFile(array(
        'name' => 'photo.jpg'));
        $content = file_get_contents('../files/photo.jpg');
        $file = $driveService->files->create($fileMetadata, array(
            'data' => $content,
            'mimeType' => 'image/jpeg',
            'uploadType' => 'multipart',
            'fields' => 'id'));
        printf("File ID: %s\n", $file->id);
        return $file->id;
    } catch(Exception $e) {
        echo "Error Message: ".$e;
    } 

}

.NET

drive/snippets/drive_v3/DriveV3Snippets/UploadBasic.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate use of Drive insert file API
    public class UploadBasic
    {
        /// <summary>
        /// Upload new file.
        /// </summary>
        /// <param name="filePath">Image path to upload.</param>
        /// <returns>Inserted file metadata if successful, null otherwise.</returns>
        public static string DriveUploadBasic(string filePath)
        {
            try
            {
                /* Load pre-authorized user credentials from the environment.
                 TODO(developer) - See https://developers.google.com/identity for
                 guides on implementing OAuth2 for your application. */
                GoogleCredential credential = GoogleCredential.GetApplicationDefault()
                    .CreateScoped(DriveService.Scope.Drive);

                // Create Drive API service.
                var service = new DriveService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Drive API Snippets"
                });

                // Upload file photo.jpg on drive.
                var fileMetadata = new Google.Apis.Drive.v3.Data.File()
                {
                    Name = "photo.jpg"
                };
                FilesResource.CreateMediaUpload request;
                // Create a new file on drive.
                using (var stream = new FileStream(filePath,
                           FileMode.Open))
                {
                    // Create a new file, with metadata and stream.
                    request = service.Files.Create(
                        fileMetadata, stream, "image/jpeg");
                    request.Fields = "id";
                    request.Upload();
                }

                var file = request.ResponseBody;
                // Prints the uploaded file id.
                Console.WriteLine("File ID: " + file.Id);
                return file.Id;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else if (e is FileNotFoundException)
                {
                    Console.WriteLine("File not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

HTTP

  1. Sorguyla birlikte yöntemin /upload URI'sine bir POST isteği oluşturun uploadType=multipart parametresi için:

    POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart

  2. İsteğin gövdesini oluşturun. Gövdeyi çok parçalı/ilgili içerik türü RFC 2387 ise Bu kampanya iki bölümden oluşur:

    • Meta veriler. Meta veri önce gelmeli ve bir Content-Type içermelidir. başlık application/json; charset=UTF-8 olarak ayarlandı. Dosyanın meta verilerini ekleyin JSON biçiminde dışa aktarabilirsiniz.
    • Medya. Medya ikinci oluşturulmalı ve Content-Type başlığı içermelidir. olabilir. Dosyadaki verileri medya bölümüne ekleyin.

    Her bölümü, önüne iki kısa çizgi ekleyerek bir sınır dizesiyle tanımlayın. İçinde son sınır dizesinden sonra iki kısa çizgi ekleyin.

  3. Şu üst düzey HTTP üstbilgilerini ekleyin:

    • Content-Type multipart/related olarak ayarla ve sınırı dahil et dizenin olması gerekir. Örneğin, örnek: Content-Type: multipart/related; boundary=foo_bar_baz
    • Content-Length İstek gövdesindeki toplam bayt sayısına ayarlayın.
  4. İsteği gönderin.

İlişkili veriler olmadan yalnızca meta veri bölümünü oluşturmak veya güncellemek için standart kaynak uç noktasına bir POST veya PATCH isteği gönderin: https://www.googleapis.com/drive/v3/files İstek başarılı olursa sunucu, HTTP 200 OK durum kodunu dosyanın meta verilerdir.

Dosya oluştururken dosyanın name bölümünde bir dosya uzantısı belirtmelidirler. girin. Örneğin, bir fotoğraf JPEG dosyası oluştururken, meta verilerde "name": "photo.jpg" gibi görünür. files.get için yapılan sonraki çağrılar, salt okunur fileExtension özelliğini döndürür. ilk olarak name alanında belirtilen uzantıyı içerir.

Devam ettirilebilir bir yükleme gerçekleştirme

Devam ettirilebilir yükleme, bir iletişimden sonra yükleme işlemini devam ettirebilmenizi sağlar. veri akışını kesintiye uğratır. Çünkü yeniden başlatmak zorunda değilsiniz. devam ettirilebilir yüklemeler bant genişliğinizi azaltabilir veya kullanım değerini ifade eder.

Devam ettirilebilir yüklemeler, dosya boyutlarınızın büyük farklılıklar göstermesi veya İstekler için sabit bir zaman sınırı vardır (örneğin, mobil işletim sistemi arka plan görevleri belirli App Engine istekleri) için geçerlidir. Devam ettirilebilir yüklemeleri şunlar için de kullanabilirsiniz: yükleme ilerleme çubuğu göstermek istediğiniz durumlar olabilir.

Devam ettirilebilir bir yükleme, birkaç üst düzey adımdan oluşur:

  1. İlk isteği gönderin ve devam ettirilebilir oturum URI'sini alın.
  2. Verileri yükleyip yükleme durumunu izleyin.
  3. (İsteğe bağlı) Yükleme işlemi kesintiye uğrarsa yüklemeyi devam ettirin.

İlk isteği gönder

Devam ettirilebilir bir yükleme başlatmak için files.create yöntemi uploadType=resumable.

HTTP

  1. Sorguyla birlikte yöntemin /upload URI'sine bir POST isteği oluşturun uploadType=resumable parametresi için:

    POST https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable

    Başlatma isteği başarılı olursa yanıt bir 200 OK içerir HTTP durum kodu. Ayrıca, şunu içeren bir Location devam ettirilebilir oturum URI'sını belirtir:

    HTTP/1.1 200 OK
    Location: https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&upload_id=xa298sd_sdlkj2
    Content-Length: 0
    

    Dosya verilerini ve sorguyu yükleyebilmek için devam ettirilebilir oturum URI'sini kaydedin yükleme durumunu kontrol edebilirsiniz. Devam ettirilebilir bir oturum URI'sinin süresi bir hafta sonra dolar.

  2. Dosya için meta verileriniz varsa meta verileri istek gövdesine ekleyin JSON biçiminde dışa aktarabilirsiniz. Aksi takdirde, istek gövdesini boş bırakın.

  3. Şu HTTP üstbilgilerini ekleyin:

    • X-Upload-Content-Type İsteğe bağlıdır. Dosyanın MIME türüne ayarlayın Bu veriler sonraki isteklerde aktarılır. MIME türü meta veride veya bu başlık aracılığıyla belirtilmemişse nesne application/octet-stream. olarak sunulur
    • X-Upload-Content-Length İsteğe bağlıdır. Şu bayt sayısına ayarla: sonraki isteklerde aktarılır.
    • Content-Type Dosya için meta verileriniz varsa gereklidir. Şu değere ayarla: application/json;, charset=UTF-8.
    • Content-Length Parçalı aktarım kodlaması kullanmıyorsanız gereklidir. Bu ilk isteğin gövdesindeki bayt sayısına ayarlayın.
  4. İsteği gönderin. Oturum başlatma isteği başarılı olursa yanıt bir 200 OK HTTP durum kodu içeriyor. Ayrıca yanıt devam ettirilebilir oturum URI'sını belirten bir Location üstbilgisi içerir. Dosya verilerini yüklemek ve yükleme durumu. Devam ettirilebilir bir oturum URI'sinin süresi bir hafta sonra dolar.

  5. Devam ettirilebilir oturum URL'sini kopyalayıp kaydedin.

  6. İçeriği yükleme bölümüne geçin.

İçeriği yükleme

Devam ettirilebilir bir oturumla dosya yüklemenin iki yolu vardır:

  • Tek bir istekte içerik yükleme: Dosya şu durumlarda olduğunda bu yaklaşımı kullanın: Tek bir istek için sabit bir süre sınırı yoksa, veya yükleme ilerleme durumu göstergesi görüntülemeniz gerekmiyor. Bu en iyi seçenektir çünkü daha az istek gerektirir ve daha iyi sonuç verir. bazı yolları da görmüştük.
  • İçeriği birden çok parça halinde yükleme: Aşağıdaki durumlarda bu yaklaşımı kullanın: Tek bir istekte aktarılan veri miktarını azaltma Şuna ihtiyacınız olabilir: bireysel kullanıcılar için sabit bir zaman sınırı olduğunda aktarılan veri miktarını azaltmak üzere isteklerine yönelik bir dizi yanıt ekleyebilirsiniz. Bu yaklaşım, dönüşüm hunisinin üst kısmındaki Yükleme durumunu gösterir.

HTTP - tekli istek

  1. Devam ettirilebilir oturum URI'si için bir PUT isteği oluşturun.
  2. Dosyanın verilerini istek gövdesine ekleyin.
  3. Dosyadaki bayt sayısına ayarlanmış bir Content-Length (İçerik Uzunluğu) HTTP üstbilgisi ekleyin.
  4. İsteği gönderin. Yükleme isteği kesintiye uğrarsa veya 5xx yanıtını alıyorsanız Kesintiye uğrayan yüklemeyi devam ettirme bölümündeki prosedürü uygulayın.

HTTP - birden fazla istek

  1. Devam ettirilebilir oturum URI'si için bir PUT isteği oluşturun.

  2. Parçanın verilerini istek gövdesine ekleyin. Parçalar oluşturun Tamamlanan son parça hariç 256 KB (256 x 1024 bayt) boyutunda geri yüklenir. Yüklemenin tamamlanması için yığın boyutunu mümkün olduğunca büyük tutun. yardımcı olur.

  3. Şu HTTP üstbilgilerini ekleyin:

    • Content-Length Geçerli parçadaki bayt sayısına ayarlayın.
    • Content-Range Dosyada hangi baytları yüklediğinizi gösterecek şekilde ayarlayın. Örneğin, Örneğin, Content-Range: bytes 0-524287/2000000, baytın ilk 524.288 bayt (256 x 1024 x 2) boyutudur.
  4. İsteği gönderin ve yanıtı işleyin. Yükleme isteği veya 5xx yanıtı alırsanız Kesintiye uğrayan yüklemeyi devam ettirme

  5. Dosyada kalan her parça için 1 ile 4 arasındaki adımları tekrarlayın. Şunu kullanın: Range üstbilgisini kullanın. Sunucunun önceki istekte gönderilen tüm baytları aldığını varsaymayın.

Dosya yükleme işlemi tamamlandığında 200 OK veya Kaynakla ilişkili tüm meta verilerle birlikte 201 Created yanıtı.

Kesintiye uğrayan yüklemeyi devam ettirme

Yükleme isteği yanıt verilmeden sonlandırılırsa veya 503 Service Unavailable yanıtı alırsanız kesintiye uğrayan yüklemeyi devam ettirmeniz gerekir.

HTTP

  1. Yükleme durumunu istemek için boş bir PUT isteği oluşturun: devam ettirilebilir oturum URI'si.

  2. Sayfadaki mevcut konumun mevcut olduğunu belirtmek için Content-Range dosyası bilinmiyor. Örneğin, Content-Range için */2000000 toplam dosya uzunluğu 2.000.000 bayttır. Bu öğenin tam boyutunu bilmiyorsanız dosyasında Content-Range değerini */* olarak ayarlayın.

  3. İsteği gönderin.

  4. Yanıtı işle:

    • 200 OK veya 201 Created yanıtı, yüklemenin şu şekilde yapıldığını gösterir: ve başka bir işlem yapılmasına gerek yoktur.
    • 308 Resume Incomplete yanıtı, devam etmeniz gerektiğini belirtir tıklayın.
    • 404 Not Found yanıtı, yükleme oturumunun süresinin dolduğunu ve yükleme baştan yeniden başlatılmalıdır.
  5. 308 Resume Incomplete yanıtı aldıysanız Sunucunun hangi baytları aldığını belirlemek için yanıtın Range üstbilgisi. Öğe yanıt Range başlığı içermiyor. Bayt alınmadı. Örneğin, bytes=0-42 öğesinin Range üstbilgisi, ilk dosyanın 43 baytı alındı ve yüklenecek sonraki parça 44. bayt ile başlar.

  6. Yüklemeyi nereden devam ettireceğinizi artık bildiğinize göre, dosyayı yüklemeye devam edebilirsiniz ile başlar. Şunu ekleyin: Content-Range üstbilgisini kullanabilirsiniz. Örneğin, Örneğin, Content-Range: bytes 43-1999999, gönderdiğini görüyorsunuz.

Medya yükleme hatalarını işleme

Medya yüklerken hataları işlemek için aşağıdaki en iyi uygulamaları izleyin:

  • 5xx hata için, bağlantı nedeniyle başarısız olan yüklemeleri devam ettirin veya yeniden deneyin dikkat edin. 5xx hatalarının ele alınması hakkında daha fazla bilgi için 500, 502, 503, 504 hataları.
  • 403 rate limit hata için yüklemeyi yeniden deneyin. Daha fazla bilgi için 403 rate limit hatalarının işlenmesi için 403 hatası: rateLimitExceeded.
  • Devam ettirilebilir bir yükleme sırasındaki tüm 4xx hatalarını (403 dahil) yeniden başlatın geri yüklenir. Bu hatalar, yükleme oturumunun süresinin dolduğunu ve yeni bir oturum URI'si isteyerek yeniden başlatılır. Oturum yükleme bir hafta boyunca hiçbir işlem yapılmadığında da geçerliliğini yitirir.

Google Dokümanlar türlerine aktar

Drive'da bir dosya oluşturduğunuzda, Google Dokümanlar veya E-Tablolar'ı tıklayın. Örneğin, belki bir dokümanı eski bir dosyadan Google Dokümanlar'daki kelime işlemcinizin sunduğu avantajlardan yararlanabilmeniz için özellikleri.

Bir dosyayı belirli bir Google Workspace dosya türüne dönüştürmek için Dosyayı oluştururken Google Workspace mimeType.

Aşağıda, bir CSV dosyasının Google Workspace e-tablosuna nasıl dönüştürüleceği gösterilmektedir:

Java

drive/snippets/drive_v3/src/main/java/UploadWithConversion.java
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.FileContent;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.File;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.Arrays;

/* Class to demonstrate Drive's upload with conversion use-case. */
public class UploadWithConversion {

  /**
   * Upload file with conversion.
   *
   * @return Inserted file id if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static String uploadWithConversion() throws IOException {
    // Load pre-authorized user credentials from the environment.
    // TODO(developer) - See https://developers.google.com/identity for
    // guides on implementing OAuth2 for your application.
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    Drive service = new Drive.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Drive samples")
        .build();

    // File's metadata.
    File fileMetadata = new File();
    fileMetadata.setName("My Report");
    fileMetadata.setMimeType("application/vnd.google-apps.spreadsheet");

    java.io.File filePath = new java.io.File("files/report.csv");
    FileContent mediaContent = new FileContent("text/csv", filePath);
    try {
      File file = service.files().create(fileMetadata, mediaContent)
          .setFields("id")
          .execute();
      System.out.println("File ID: " + file.getId());
      return file.getId();
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to move file: " + e.getDetails());
      throw e;
    }
  }
}

Python

drive/snippets/drive-v3/file_snippet/upload_with_conversion.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaFileUpload


def upload_with_conversion():
  """Upload file with conversion
  Returns: ID of the file uploaded

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create drive api client
    service = build("drive", "v3", credentials=creds)

    file_metadata = {
        "name": "My Report",
        "mimeType": "application/vnd.google-apps.spreadsheet",
    }
    media = MediaFileUpload("report.csv", mimetype="text/csv", resumable=True)
    # pylint: disable=maybe-no-member
    file = (
        service.files()
        .create(body=file_metadata, media_body=media, fields="id")
        .execute()
    )
    print(f'File with ID: "{file.get("id")}" has been uploaded.')

  except HttpError as error:
    print(f"An error occurred: {error}")
    file = None

  return file.get("id")


if __name__ == "__main__":
  upload_with_conversion()

Node.js

drive/snippets/drive_v3/file_snippets/upload_with_conversion.js
/**
 * Upload file with conversion
 * @return{obj} file Id
 * */
async function uploadWithConversion() {
  const fs = require('fs');
  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });
  const service = google.drive({version: 'v3', auth});
  const fileMetadata = {
    name: 'My Report',
    mimeType: 'application/vnd.google-apps.spreadsheet',
  };
  const media = {
    mimeType: 'text/csv',
    body: fs.createReadStream('files/report.csv'),
  };

  try {
    const file = await service.files.create({
      requestBody: fileMetadata,
      media: media,
      fields: 'id',
    });
    console.log('File Id:', file.data.id);
    return file.data.id;
  } catch (err) {
    // TODO(developer) - Handle error
    throw err;
  }
}

PHP

drive/snippets/drive_v3/src/DriveUploadWithConversion.php
use Google\Client;
use Google\Service\Drive;
function uploadWithConversion()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);
        $fileMetadata = new Drive\DriveFile(array(
            'name' => 'My Report',
            'mimeType' => 'application/vnd.google-apps.spreadsheet'));
        $content = file_get_contents('../files/report.csv');
        $file = $driveService->files->create($fileMetadata, array(
            'data' => $content,
            'mimeType' => 'text/csv',
            'uploadType' => 'multipart',
            'fields' => 'id'));
        printf("File ID: %s\n", $file->id);
        return $file->id;
    } catch(Exception $e) {
        echo "Error Message: ".$e;
    }

}

.NET

drive/snippets/drive_v3/DriveV3Snippets/UploadWithConversion.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate Drive's upload with conversion use-case.
    public class UploadWithConversion
    {
        /// <summary>
        /// Upload file with conversion.
        /// </summary>
        /// <param name="filePath">Id of the spreadsheet file.</param>
        /// <returns>Inserted file id if successful, null otherwise.</returns>
        public static string DriveUploadWithConversion(string filePath)
        {
            try
            {
                /* Load pre-authorized user credentials from the environment.
                 TODO(developer) - See https://developers.google.com/identity for
                 guides on implementing OAuth2 for your application. */
                GoogleCredential credential = GoogleCredential.GetApplicationDefault()
                    .CreateScoped(DriveService.Scope.Drive);

                // Create Drive API service.
                var service = new DriveService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Drive API Snippets"
                });

                // Upload file My Report on drive.
                var fileMetadata = new Google.Apis.Drive.v3.Data.File()
                {
                    Name = "My Report",
                    MimeType = "application/vnd.google-apps.spreadsheet"
                };
                FilesResource.CreateMediaUpload request;
                // Create a new drive.
                using (var stream = new FileStream(filePath,
                           FileMode.Open))
                {
                    // Create a new file, with metadata and stream.
                    request = service.Files.Create(
                        fileMetadata, stream, "text/csv");
                    request.Fields = "id";
                    request.Upload();
                }

                var file = request.ResponseBody;
                // Prints the uploaded file id.
                Console.WriteLine("File ID: " + file.Id);
                return file.Id;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else if (e is FileNotFoundException)
                {
                    Console.WriteLine("File not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

Dönüşüm olup olmadığını görmek için dosyayı oluşturmadan önce about kaynağının importFormats dizisini kontrol edin. Desteklenen dönüşümler, bu dizide dinamik olarak sunulur. Bazı yaygın içe aktarma biçimleri şunlardır:

NeredenAlıcı
Microsoft Word, OpenDocument Metni, HTML, RTF, düz metinGoogle Dokümanlar
Microsoft Excel, OpenDocument E-Tablosu, CSV, TSV, düz metinGoogle E-Tablolar
Microsoft PowerPoint, OpenDocument SunusuGoogle Slaytlar
JPEG, PNG, GIF, BMP, PDFGoogle Dokümanlar (resmi bir dokümana yerleştirir)
Düz metin (özel MIME türü), JSONGoogle Apps Komut Dosyası

update isteği sırasında medya yükleyip bir Dokümanlar, E-Tablolar veya Slaytlar dosyası, dokümanın tüm içeriği değiştirilir.

Bir resmi Dokümanlar'a dönüştürdüğünüzde Drive, Resmi metne dönüştürmek için optik karakter tanıma (OCR) özelliği. Şunları yapabilirsiniz: geçerli BCP'yi belirterek OCR algoritmasının kalitesini artırır. 47 dil kodu ocrLanguage parametresinden sonra bir değer girin. Çıkarılan metin, Doküman'da, yerleştirilmiş resmin yanında görünür.

Dosya yüklemek için önceden oluşturulmuş bir kimlik kullanın

Drive API, Drive API'yi kullanarak mevcut olan önceden oluşturulmuş dosya kimliklerinin kaynak yüklemek ve oluşturmak için kullanılır. Yükleme ve dosya oluşturma istekleri önceden oluşturulmuş bu kimlikleri kullanın. Dosya meta verilerinde id alanını ayarlayın.

Önceden oluşturulmuş kimlikler oluşturmak için şu numarayı arayın: files.generateIds kimlik sayısını belirleyin.

Belirsiz bir değer varsa önceden oluşturulmuş kimliklerle yüklemeleri güvenle yeniden deneyebilirsiniz. sunucu hatası veya zaman aşımı olabilir. Dosya başarıyla oluşturulduysa, daha sonra yeniden denemeler HTTP 409 hatası döndürür ve yinelenen dosyalar oluşturmaz.

Bilinmeyen dosya türleri için dizine eklenebilir metin tanımlayın

Kullanıcılar, doküman içeriğini bulmak için Drive kullanıcı arayüzünü kullanabilir. Ayrıca transkriptinizi files.list ve fullText kullanın alanını kullanabilirsiniz. Daha fazla bilgi için bkz. dosyalar ve klasörler olabilir.

Drive, aşağıdaki durumlarda dokümanları arama için otomatik olarak dizine ekler: metin dokümanları, PDF'ler, metin içeren resimler ve yaygın olan başka türlerde de kullanılır. Uygulamanız diğer dosya türlerini (ör. çizimler, video ve kısayollar) sağlanan, sağlayarak keşfedilebilirliği dizine eklenebilir metni dosyanın contentHints.indexableText alanında bulabilirsiniz.

Dizine eklenebilir metin hakkında daha fazla bilgi için Dosyayı yönetme bölümüne bakın meta veriler için de kullanılabilecektir.