Interfejs Dysku Google API umożliwia przesyłanie danych o pliku podczas tworzenia lub aktualizowania File
. Informacje o tworzeniu pliku zawierającego tylko metadane (np. folderu) znajdziesz w artykule Tworzenie plików z samymi metadanymi.
Istnieją 3 rodzaje przesyłania:
Proste przesyłanie (
uploadType=media
): ten typ przesyłania służy do przesyłania niewielkiego pliku multimedialnego o wielkości do 5 MB bez podawania metadanych. Aby przeprowadzić proste przesyłanie, zapoznaj się z artykułem Przeprowadzanie prostego przesyłania.Przesłanie w wielu częściach (
uploadType=multipart
): używaj tego typu przesyłania, aby przesłać mały plik (do 5 MB) wraz z metadanymi, które opisują plik, w jednym żądaniu. Informacje o przesyłaniu wieloczęściowym znajdziesz w sekcji Przesyłanie wieloczęściowe.Przesyłanie z możliwością wznowienia (
uploadType=resumable
): używaj tego typu przesyłania w przypadku dużych plików (większych niż 5 MB) oraz gdy istnieje duże prawdopodobieństwo przerwania połączenia z siecią, na przykład podczas tworzenia pliku z aplikacji mobilnej. Przesyłanie z możliwością wznowienia jest też dobrym wyborem w przypadku większości aplikacji, ponieważ działa również w przypadku małych plików przy minimalnym koszcie przesyłania, który stanowi jedno dodatkowe żądanie HTTP na przesyłanie. Aby przeprowadzić przesyłanie z możliwością wznowienia, zapoznaj się z artykułem Przeprowadzanie przesyłania z możliwością wznowienia.
Biblioteki klienta interfejsu API Google obsługują co najmniej 1 z tych typów przesyłania. Więcej informacji o sposobach używania poszczególnych typów znajdziesz w dokumentacji biblioteki klienta.
Użyj PATCH
lub PUT
Przypominamy, że czasownik HTTP PATCH
obsługuje częściową aktualizację zasobu pliku, a czasownik HTTP PUT
obsługuje pełną wymianę zasobu. Pamiętaj, że PUT
może wprowadzić zmiany powodujące przerwanie działania, gdy dodasz nowe pole do istniejącego zasobu.
Podczas przesyłania zasobu pliku przestrzegaj tych wytycznych:
- Użyj czasownika HTTP opisanego w dokumentacji interfejsu API w przypadku początkowego żądania wznawialnego przesyłania lub jedynego żądania prostego lub wieloczęściowego przesyłania.
- Używaj
PUT
we wszystkich kolejnych żądaniach przesyłania z możliwością wznowienia, gdy żądanie zostało już rozpoczęte. Żądania te przesyłają treści niezależnie od wywoływanej metody.
Przesyłanie proste
Aby wykonać proste przesyłanie, użyj metody files.create
z uploadType=media
.
Poniżej znajdziesz instrukcje prostego przesyłania:
HTTP
Utwórz żądanie
POST
do identyfikatora URI metody /upload z parametrem zapytaniauploadType=media
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=media
Dodaj dane pliku do treści żądania.
Dodaj te nagłówki HTTP:
Content-Type
. Ustaw typ multimediów MIME dla przesyłanego obiektu.Content-Length
. Ustaw na liczbę bajtów, które chcesz przesłać. Jeśli używasz kodowania transferu w porcjach, ten nagłówek nie jest wymagany.
Wyślij prośbę. Jeśli żądanie się powiedzie, serwer zwróci kod stanu
HTTP 200 OK
wraz z metadanymi pliku. {HTTP}
Podczas prostego przesyłania tworzone są podstawowe metadane, a niektóre atrybuty, takie jak typ MIME czy modifiedTime
, są wnioskowane z pliku. Możesz użyć prostego przesyłania w przypadku małych plików, których metadane nie są ważne.
Przesyłanie wieloczęściowe
Prośba o przesyłanie wieloczęściowe umożliwia przesyłanie metadanych i danych w ramach tej samej prośby. Użyj tej opcji, jeśli przesyłane dane są na tyle małe, że w razie niepowodzenia połączenia można ponownie przesłać je w całości.
Aby przeprowadzić przesyłanie wieloczęściowe, użyj metody files.create
z parametrem uploadType=multipart
.
Poniżej znajdziesz instrukcje przesyłania wieloczęściowego:
Java
Python
Node.js
PHP
.NET
HTTP
Utwórz żądanie
POST
do identyfikatora URI metody /upload z parametrem zapytaniauploadType=multipart
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart
Utwórz treść żądania. Sformatuj treść zgodnie z typem treści multipart/related RFC 2387, który składa się z 2 części:
- Metadane Metadane muszą być podane jako pierwsze i mieć nagłówek
Content-Type
application/json;
charset=UTF-8
. Dodaj metadane pliku w formacie JSON. - Multimedia. Plik multimedialny musi być w drugiej kolejności i musi mieć nagłówek
Content-Type
dowolnego typu MIME. Dodaj dane pliku do części multimedialnej.
Każdą część należy oznaczyć ciągiem znaków granicznych poprzedzonym przez 2 łączniki. Poza tym za ostatnim ciągiem znaków granicy dodaj 2 łączniki.
- Metadane Metadane muszą być podane jako pierwsze i mieć nagłówek
Dodaj te nagłówki HTTP najwyższego poziomu:
Content-Type
. Ustaw namultipart/related
i uwzględnij ciąg znaków używany do identyfikowania różnych części żądania. Przykład:Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length
. Ustaw na łączną liczbę bajtów w ciele żądania.
Prześlij prośbę.
Aby utworzyć lub zaktualizować tylko część metadanych bez powiązanych danych, wyślij żądanie POST
lub PATCH
do standardowego punktu końcowego zasobu:
https://www.googleapis.com/drive/v3/files
Jeśli żądanie się powiedzie, serwer zwróci kod stanu HTTP 200 OK
wraz z metadanymi pliku.
Podczas tworzenia plików należy określić rozszerzenie pliku w polu name
. Podczas tworzenia pliku JPEG ze zdjęciem możesz na przykład podać w metadanych wartość "name": "photo.jpg"
. Kolejne wywołania funkcji files.get
zwracają właściwość fileExtension
tylko do odczytu, która zawiera rozszerzenie określone pierwotnie w polu name
.
Przesyłanie z możliwością wznowienia
Przesyłanie z możliwością wznowienia umożliwia wznowienie operacji przesyłania po tym, jak błąd komunikacji przerwie przepływ danych. Ponieważ nie musisz ponownie rozpoczynać przesyłania dużych plików, w przypadku awarii sieci przesyłanie z możliwością wznowienia może też zmniejszyć wykorzystanie przepustowości.
Przesyłanie z możliwością wznowienia jest przydatne, gdy rozmiary plików mogą się znacznie różnić lub gdy istnieje ustalony limit czasowy dla żądań (np. zadania wykonywane w tle systemu operacyjnego na urządzeniu mobilnym i określone żądania App Engine). Przesyłanie możliwe do wznowienia możesz też stosować w sytuacjach, gdy chcesz wyświetlić pasek postępu przesyłania.
Przerywane przesyłanie składa się z kilku kroków ogólnych:
- Wyślij początkowe żądanie i pobierz identyfikator URI sesji, którą można wznowić.
- Przesyłanie danych i monitorowanie stanu przesyłania.
- (opcjonalnie) Jeśli przesyłanie zostało przerwane, wznów je.
Wyślij wstępne żądanie
Aby rozpocząć przesyłanie możliwe do wznowienia, użyj metody files.create
z uploadType=resumable
.
HTTP
Utwórz żądanie
POST
do identyfikatora URI metody /upload z parametrem zapytaniauploadType=resumable
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable
Jeśli żądanie zainicjowania się powiedzie, odpowiedź będzie zawierać kod stanu HTTP
200 OK
. Dodatkowo zawiera nagłówekLocation
, który określa identyfikator URI sesji z możliwością wznowienia:HTTP/1.1 200 OK Location: https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&upload_id=xa298sd_sdlkj2 Content-Length: 0
Zapisz identyfikator URI sesji możliwej do wznowienia, aby móc przesłać dane pliku i zapytać o stan przesyłania. Identyfikator URI sesji, którą można wznowić, wygasa po tygodniu.
Jeśli masz metadane pliku, dodaj je do treści żądania w formacie JSON. W przeciwnym razie pozostaw treść żądania pustą.
Dodaj te nagłówki HTTP:
X-Upload-Content-Type
Opcjonalnie. Ustaw na typ MIME danych pliku, które są przesyłane w kolejnych żądaniach. Jeśli typ MIME danych nie jest określony w metadanych ani w tym nagłówku, obiekt jest wyświetlany jakoapplication/octet-stream.
X-Upload-Content-Length
Opcjonalna. Ustaw liczbę bajtów danych pliku, które są przesyłane w kolejnych żądaniach.Content-Type
. Wymagany, jeśli masz metadane pliku. Ustaw naapplication/json;
charset=UTF-8
.Content-Length
. Wymagany, chyba że używasz kodowania fragmentowego transferu. Ustaw na liczbę bajtów w treści tego początkowego żądania.
Wyślij prośbę. Jeśli żądanie rozpoczęcia sesji zakończy się powodzeniem, odpowiedź będzie zawierać kod stanu
200 OK HTTP
. Dodatkowo odpowiedź zawiera nagłówekLocation
, który określa identyfikator URI sesji z możliwością wznowienia. Za pomocą identyfikatora URI sesji z możliwością wznawiania możesz przesyłać dane pliku i sprawdzać stan przesyłania. Identyfikator URI sesji, którą można wznowić, wygasa po tygodniu.Skopiuj i zapisz adres URL sesji, którą można wznowić.
Przejdź do przesyłania treści.
Przesyłanie treści
Są 2 sposoby przesyłania pliku z sesją, którą można wznowić:
- Przesyłanie treści w ramach pojedynczego żądania: użyj tego podejścia, gdy plik może zostać przesłany w ramach jednego żądania, jeśli nie ma określonego limitu czasu dla pojedynczego żądania lub nie musisz wyświetlać wskaźnika postępu przesyłania. To podejście jest najlepsze, ponieważ wymaga wysłania mniejszej liczby żądań i daje lepsze wyniki.
Przesyłanie treści w kilku częściach: użyj tego podejścia, jeśli musisz zmniejszyć ilość danych przesyłanych w pojedynczym żądaniu. Jeśli w przypadku poszczególnych żądań obowiązuje określony limit czasowy, konieczne może być ograniczenie przesyłanych danych. Może się tak zdarzyć w przypadku niektórych klas żądań App Engine. Takie podejście jest też przydatne, jeśli musisz wyświetlić niestandardowy wskaźnik postępu przesyłania.
HTTP – pojedyncze żądanie
- Utwórz żądanie
PUT
do identyfikatora URI sesji z możliwością wznowienia. - Dodaj dane pliku do treści żądania.
- Dodaj nagłówek HTTP Content-Length, ustawiony na liczbę bajtów w pliku.
- Prześlij prośbę. Jeśli żądanie przesyłania zostanie przerwane lub otrzymasz odpowiedź
5xx
, postępuj zgodnie z instrukcjami w artykule Wznawianie przerwanego przesyłania.
HTTP – wiele żądań
Utwórz żądanie
PUT
do identyfikatora URI sesji z możliwością wznowienia.Dodaj dane fragmentu do treści żądania. Tworzenie fragmentów o wielokrotności 256 KB (256 x 1024 bajtów), z wyjątkiem ostatniego fragmentu, który kończy przesyłanie. Ustaw rozmiar fragmentu na jak największy, aby przesyłanie było wydajne.
Dodaj te nagłówki HTTP:
Content-Length
. Ustaw na liczbę bajtów w bieżącym fragmencie.Content-Range
. Ustaw, aby pokazywać, jakie bajty w przesyłanym pliku. Na przykładContent-Range: bytes 0-524287/2000000
oznacza, że przesyłasz pierwsze 524 288 bajtów (256 x 1024 x 2) z pliku o rozmiarze 2 000 000 bajtów.
Prześlij żądanie i przetwórz odpowiedź. Jeśli żądanie przesyłania zostało przerwane lub jeśli otrzymasz odpowiedź
5xx
, postępuj zgodnie z instrukcjami w artykule Wznawianie przerwanego przesyłania.Powtórz kroki 1–4 w przypadku każdego fragmentu, który pozostał w pliku. Aby określić, gdzie ma się zacząć następny fragment, użyj nagłówka
Range
w odpowiedzi. Nie zakładaj, że serwer otrzymał wszystkie bajty wysłane w poprzednim żądaniu.
Po zakończeniu przesyłania całego pliku otrzymasz odpowiedź 200 OK
lub 201 Created
wraz ze wszystkimi metadanymi powiązanymi z zasobem.
Wznawianie przerwanego przesyłania
Jeśli żądanie przesyłania zostanie zakończone przed odpowiedzią lub otrzymasz odpowiedź 503
Service Unavailable
, musisz wznowić przerwane przesyłanie.
HTTP
Aby uzyskać stan przesyłania, utwórz puste żądanie
PUT
do identyfikatora URI sesji z możliwością wznowienia.Dodaj nagłówek
Content-Range
, aby wskazać, że bieżąca pozycja w pliku jest nieznana. Jeśli na przykład łączna długość pliku wynosi 2 000 000 bajtów, ustaw wartość parametruContent-Range
na*/2000000
. Jeśli nie znasz pełnego rozmiaru pliku, ustawContent-Range
na*/*
.Prześlij prośbę.
Przetwarzanie odpowiedzi:
- Odpowiedź
200 OK
lub201 Created
oznacza, że przesyłanie zostało zakończone i nie są wymagane żadne dodatkowe działania. - Odpowiedź
308 Resume Incomplete
wskazuje, że musisz kontynuować przesyłanie pliku. - Odpowiedź
404 Not Found
wskazuje, że sesja przesyłania wygasła i trzeba rozpocząć przesyłanie od początku.
- Odpowiedź
Jeśli otrzymasz odpowiedź
308 Resume Incomplete
, przetwórz nagłówekRange
odpowiedzi, aby określić, które bajty zostały odebrane przez serwer. Jeśli odpowiedź nie ma nagłówkaRange
, nie otrzymano żadnych bajtów. Na przykład nagłówekRange
o wartościbytes=0-42
wskazuje, że otrzymano pierwsze 43 bajty pliku, a następny fragment do przesłania rozpocznie się od bajtu 44.Teraz gdy już wiesz, gdzie wznowić przesyłanie, możesz kontynuować przesyłanie pliku, zaczynając od następnego bajtu. Dołącz nagłówek
Content-Range
, aby wskazać, która część pliku jest wysyłana. Na przykładContent-Range: bytes 43-1999999
oznacza, że wysyłasz bajty o numerach 44–2 000 000.
Obsługa błędów przesyłania multimediów
Podczas przesyłania multimediów postępuj zgodnie z tymi sprawdzonymi metodami:
- W przypadku błędów
5xx
wznów lub ponów próbę przesyłania, które nie powiodło się z powodu przerwania połączenia. Więcej informacji o obsłudze błędów5xx
znajdziesz w artykule o błędach 500, 502, 503 i 504. - W przypadku błędów
403 rate limit
spróbuj przesłać plik ponownie. Więcej informacji o obsłudze błędów403 rate limit
znajdziesz w artykule Błąd 403:rateLimitExceeded
. - Jeśli podczas wznawiania przesyłania wystąpią błędy
4xx
(w tym403
), rozpocznij przesyłanie od nowa. Te błędy oznaczają, że sesja przesyłania wygasła i trzeba ją rozpocząć ponownie, wysyłając żądanie o nowy identyfikator URI sesji. Sesje przesyłania wygasają też po tygodniu braku aktywności.
Typy plików do importowania do Dokumentów Google
Podczas tworzenia pliku na Dysku możesz chcieć przekonwertować go na plik typu Google Workspace, takiego jak Dokumenty lub Arkusze. Możesz na przykład przekształcić dokument z ulubionego procesora tekstu w dokument w Dokumentach, aby skorzystać z jego funkcji.
Aby przekonwertować plik na określony typ pliku Google Workspace, podczas jego tworzenia określ mimeType
Google Workspace.
Poniżej znajdziesz instrukcje konwertowania pliku CSV na arkusz Google Workspace:
Java
Python
Node.js
PHP
.NET
Aby sprawdzić, czy konwersja jest dostępna, przed utworzeniem pliku sprawdź tablicę importFormats
zasobu about
.
Obsługiwane konwersje są dynamicznie dostępne w tym tablicy. Typowe formaty importu to:
Z | Do |
---|---|
Microsoft Word, OpenDocument Text, HTML, RTF, zwykły tekst | Dokumenty Google |
Microsoft Excel, OpenDocument Spreadsheet, CSV, TSV, zwykły tekst | Arkusze Google |
Microsoft PowerPoint, prezentacja OpenDocument | Prezentacje Google |
JPEG, PNG, GIF, BMP, PDF | Dokumenty Google (umieszcza obraz w dokumencie) |
Zwykły tekst (specjalny typ MIME), JSON | Google Apps Script |
Gdy przesyłasz i konwertujesz multimedia podczas update
do pliku Dokumentów, Arkuszy lub Prezentacji, cała zawartość dokumentu zostanie zastąpiona.
Gdy konwertujesz obraz na format Dokumentów, Dysk konwertuje obraz na tekst za pomocą
optycznego rozpoznawania znaków (OCR). Możesz poprawić jakość algorytmu OCR, podając odpowiedni kod języka BCP 47 w parametrze ocrLanguage
. Wyodrębniony tekst pojawi się w dokumencie obok umieszczonego obrazu.
Przesyłanie plików za pomocą wygenerowanego wcześniej identyfikatora
Interfejs Drive API umożliwia pobieranie listy wcześniej wygenerowanych identyfikatorów plików, które służą do przesyłania i tworzenia zasobów. Żądania przesyłania i tworzenia plików mogą korzystać z tych wstępnie wygenerowanych identyfikatorów. Ustaw pole id
w metadanych pliku.
Aby utworzyć wstępnie wygenerowane identyfikatory, wywołaj metodę files.generateIds
z liczbą identyfikatorów do utworzenia.
Jeśli wystąpi nieokreślony błąd serwera lub przekroczenie limitu czasu, możesz bezpiecznie powtórzyć przesyłanie za pomocą wcześniej wygenerowanych identyfikatorów. Jeśli plik został utworzony, kolejne próby zwracają błąd HTTP 409
i nie tworzą duplikatów.
Definiowanie tekstu możliwego do zindeksowania w przypadku nieznanych typów plików
Użytkownicy mogą znaleźć zawartość dokumentu za pomocą interfejsu Dysku. Do wyszukiwania treści z aplikacji możesz też użyć files.list
i pola fullText
. Więcej informacji znajdziesz w artykule Wyszukiwanie plików i folderów.
Dysk automatycznie indeksuje dokumenty na potrzeby wyszukiwania, gdy rozpozna typ plików, w tym dokumenty tekstowe, pliki PDF, obrazy z tekstem i inne popularne typy plików. Jeśli Twoja aplikacja zapisuje inne typy plików (np. rysunki, filmy i skróty), możesz zwiększyć ich widoczność, podając tekst do zindeksowania w polu contentHints.indexableText
pliku.
Więcej informacji o tekście możliwym do indeksowania znajdziesz w artykule Zarządzanie metadanymi plików.