Google Chrome - Download the Fast, Secure Browser from Google Google uses cookies to deliver its services, to personalize ads, and to analyze traffic. You can adjust your privacy controls anytime.
The Drive API allows you to upload file data when you create or update a
File
. For information on how to create ametadata-only File
, refer to Create files.Install Drive on your Mac or PC, download the mobile app to your phone or tablet, or visit anytime at drive.google.com.Search everything. Search by keyword and filter by file type, owner and more. Drive can even recognize content in your scanned documents and images. We get you started with 15 GB free. Learn more at drive.google.com. We would like to show you a description here but the site won’t allow us. Access Google Drive with a free Google account (for personal use) or Google Workspace account (for business use).
There are three types of uploads you can perform:
- Simple upload (
uploadType=media
). Use this upload type to quickly transfera small media file (5 MB or less) without supplying metadata. To perform asimple upload, refer to Perform a simple upload. - Multipart upload (
uploadType=multipart
). Use this upload type to quicklytransfer a small file (5 MB or less) and metadata that describes the file, in asingle request. To perform a multipart upload, refer toPerform a multipart upload. - Resumable upload (
uploadType=resumable
). Use this upload type for largefiles (greater than 5 MB) and when there's a high chance of networkinterruption, such as when creating a file from a mobile app. Resumable uploadsare also a good choice for most applications because they also work for smallfiles at a minimal cost of one additional HTTP request per upload. To perform aresumable upload, refer to Perform a resumable upload.
The Google API client libraries implement at least one of the types of uploads.Refer to the client library documentation for additional details on how to useeach of the types.
Note: In the Drive API documentation, media refers to all available files withMIME types supported for upload to Google Drive. For a list of supported MIMEtypes, refer toGoogle Workspace and Drive MIME types.Note: Users can upload any file type to Drive using the Drive UI and Drive attempts to detect and automatically set the MIME type. Ifthe MIME type can't be detected, the MIME type is set toapplication/octet-stream
.Perform a simple upload
To perform a simple upload, use thefiles.create method withuploadType=media
.The following shows how to perform a simple upload:
HTTP
- Create a
POST
request to the method's /upload URI with the queryparameter ofuploadType=media
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=media
- Add the file's data to the request body.
- Add these HTTP headers:
Content-Type
. Set to the MIME media type of the object being uploaded.Content-Length
. Set to the number of bytes you upload. This header isnot required if you use chunked transfer encoding.
- Send the request. If the request succeeds, the server returns the
HTTP 200 OK
status code along with the file's metadata.
PUT
.When you perform a simple upload, basic metadata is created and some attributesare inferred from the file, such as the MIME type or
modifiedTime
. Youcan use a simple upload in cases where you have small files and file metadataisn't important.Perform a multipart upload
A multipart upload request allows you to send metadata along with the datato upload. Use this option if the data you send is small enough to uploadagain, in its entirety, if the connection fails.
To perform a multipart upload,use the files.create method withuploadType=multipart
.The following shows how to perform a multipart upload:Java
Python
Node.js
HTTP
- Create a
POST
request to the method's /upload URI with the queryparameter ofuploadType=multipart
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart
- Create the body of the request. Format the body according to themultipart/related content type [RFC 2387], which contains two parts:
- Metadata. The metadata must come first and must have a
Content-Type
header set toapplication/json;
charset=UTF-8
. Add the file's metadatain JSON format. - Media. The media must come second and must have a
Content-Type
headerof any MIME type. Add the file's data to the media part.
Identify each part with a boundary string, preceded by two hyphens. Inaddition, add two hyphens after the final boundary string. - Metadata. The metadata must come first and must have a
- Add these top-level HTTP headers:
Content-Type
. Set tomultipart/related
and include the boundarystring you're using to identify the different parts of the request. Forexample:Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length
. Set to the total number of bytes in the request body.
- Send the request.
To create or update the metadata portion only, without the associated data,send a
Note: To update an existing file, use POST
or PUT
request to the standard resource endpoint:https://www.googleapis.com/drive/v3/files
If the request succeeds,the server returns the HTTP 200 OK
status code along with the file'smetadata.PUT
.When creating files, files should specify a file extension in thefile's
name
field. For example, when creating a photo JPEG file, you mightspecify something like 'name': 'photo.jpg'
in the metadata. Subsequent callsto files.get return the read-onlyfileExtension
property containing the extension originally specified in thename
field.Perform a resumable upload
A resumable upload allows you to resume an upload operation after acommunication failure interrupts the flow of data. Because you don'thave to restart large file uploads from the start, resumable uploads can alsoreduce your bandwidth usage if there is a network failure.
Resumable uploads are useful when your file sizes mightvary greatly or when there is a fixed time limit for requests (mobile OSbackground tasks and certain AppEngine requests). You might also use resumableuploads for situations where you want to show an upload progress bar.
A resumable upload consists of three high-level steps:
- Send the initial request and retrieve the resumable session URI.
- Upload the data and monitor upload state.
- (optional) If upload is disturbed, resume the upload.
Send the initial request
To initiate aresumable upload, use the files.createmethod withuploadType=resumable
.HTTP
- Create a
POST
request to the method's /upload URI with the queryparameter ofuploadType=resumable
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable
If the initiation request succeeds, the response includes a200 OK
HTTP status code. In addition, it includes aLocation
header that specifiesthe resumable session URI:You should save the resumable session URI so you can upload the file data andquery the upload status. A resumable session URI expires after one week.Note: To update an existing file, usePUT
. - If you have metadata for the file, add the metadata to the request body inJSON format. Otherwise, leave the request body empty.
- Add these HTTP headers:
X-Upload-Content-Type
. Optional. Set to the MIME type of the filedata, which is transferred in subsequent requests. If the MIME type of thedata is not specified in metadata or through this header, the object isserved asapplication/octet-stream.
X-Upload-Content-Length
. Optional. Set to the number of bytes of filedata, which is transferred in subsequent requests.Content-Type
. Required if you have metadata for the file. Set toapplication/json;
charset=UTF-8
.Content-Length
. Required unless you use chunked transfer encoding. Setto the number of bytes in the body of this initial request.
- Send the request. If the session initiation request succeeds, the responseincludes a
200 OK HTTP
status code. In addition, the response includes aLocation
header that specifies the resumable session URI. Use the resumablesession URI to upload the file data and query the upload status. A resumablesession URI expires after one week. - Copy and save the resumable session URL.
- Continue to Uploading content
Upload the content
There are two ways to upload a file with a resumable session:
- Upload content in a single request. Use this approach when the file can be uploaded in one request,if there is no fixed time limit for any single request, or you don't need to display an upload progress indicator.This approach is usually best because it requires fewer requests and results in better performance.
- Upload the content in multiple chunks. Use this approach if you need toreduce the amount of data transferred in any single request. You might need toreduce data transferred when there is a fixed time limit for individualrequests, as can be the case for certain classes of Google App Engine requests.This approach is also useful if you need to provide a customizedindicator to show the upload progress.
HTTP - single request
- Create a
PUT
request to the resumable session URI. - Add the file's data to the request body.
- Add a Content-Length HTTP header, set to the number of bytes in the file.
- Send the request. If the upload request is interrupted, or if you receive a5xx response, follow the procedure in Resume an interrupted upload.
HTTP - multiple requests
- Create a
PUT
request to the resumable session URI. - Add the chunk's data to the request body. Create chunks in multiples of256 KB (256 x 1024 bytes) in size, except for the final chunk that completesthe upload. Keep the chunk size as large as possible so that the upload isefficient.
- Add these HTTP headers:
Content-Length
. Set to the number of bytes in the current chunk.Content-Range
. Set to show which bytes in the file you upload. Forexample,Content-Range: bytes 0-524287/2000000
shows that you upload thefirst 524,288 bytes (256 x 1024 x 2) in a 2,000,000 byte file.
- Send the request, and process the response. Os x emulator. If the upload request isinterrupted, or if you receive a 5xx response, follow the procedure inResume an interrupted upload.
- Repeat steps 1 through 4 for each chunk that remains in the file. Use the
Range
header in the response to determine where to start the next chunk. Donot assume that the server received all bytes sent in the previous request.
When the entire file upload is complete, you receive a
200 OK
or201 Created
response, along with any metadata associated with the resource.Resume an interrupted upload
If an upload request is terminated before a response, or if youreceive a
503 Service Unavailable
response, then you need to resume theinterrupted upload.HTTP
- To request the upload status, create an empty
PUT
request to theresumable session URI. - Add a
Content-Range
header to indicate that the current position in thefile is unknown. For example, set theContent-Range
to*/2000000
if yourtotal file length is 2,000,000 bytes. If you don't know the full size of thefile, set theContent-Range
to*/*
. - Send the request.
- Process the response:
- A
200 OK
or201 Created
response indicates that the upload wascompleted, and no further action is necessary. - A
308 Resume Incomplete
response indicates that you need to continueto upload the file. - A
404 Not Found
response indicates the upload session has expired andthe upload needs to be restarted from the start.
- A
- If you received a
308 Resume Incomplete
response, process the response'sRange
header, to determine which bytes the server has received. If theresponse doesn't have aRange
header, no bytes have been received.For example, aRange
header ofbytes=0-42
indicates that the first43 bytes of the file have been received and that the next chunk to uploadwould start with byte 43. - Now that you know where to resume the upload, continue to upload the filebeginning with the next byte. Include a
Content-Range
header to indicate which portion of the file you send. Forexample,Content-Range: bytes 43-1999999/2000000
indicates that yousend bytes 43 through 1,999,999.
Handle media upload errors
When you upload media, follow these best practices to handle errors:
- For 5xx errors, resume or retry uploads that fail due to connectioninterruptions. For further information on handling 5xx errors, refer toResolve errors
- For 403 rate limit errors, retry the upload. For further information onhandling 403 rate limit errors, refer toResolve a 403 error: Rate limit exceeded
- For any 4xx errors (including 403) during a resumable upload, restart theupload. These errors indicate the upload session has expired and must berestarted by requesting a new session URI. Upload sessions alsoexpire after 1 week of inactivity.
Import to Google Docs types
Google Drive Browser Menu
When you create a file in Google Drive, you might want to convert the fileinto a Google Workspace file type, such as a GoogleDoc or Sheet. For example, maybe youwant to convert a document from your favorite word processor into a Google Docto take advantage of Google Doc's features.
To convert a file to a specific Google Workspacefile type, specify the Google Workspace
mimeType
when creating the file.The following shows how to convert a CSV file to aGoogle Workspace sheet:To see if a conversion is available, check theAbout resource's
importFormats
arrayprior to creating the file. Supported conversions are available dynamicallyin this array. Some common import formats are: From | To |
---|---|
Microsoft Word, OpenDocument Text, HTML, RTF, plain text | Google Docs |
Microsoft Excel, OpenDocument Spreadsheet, CSV, TSV, plain text | Google Sheets |
Microsoft Powerpoint, OpenDocument Presentation | Google Slides |
JPEG, PNG, GIF, BMP, PDF | Google Docs (embeds the image in a Doc) |
plain text (special MIME type), JSON | Google Apps Script |
When you upload and convert media during an
update
request to a Google Doc,Sheet, or Slide, the full contents of the document are replaced.When you convert an image to a Google doc, Drive uses Optical CharacterRecognition (OCR) to convert the image to text. You can improve the quality ofthe OCR algorithm by specifying theapplicable BCP 47 languagecode in the
ocrLanguage
parameter. The extracted text appears in the Google Docs documentalongside the embedded image.Use a pregenerated ID to upload files
The Drive API allows you to retrieve a list of pregenerated file IDsused to upload and create resources. Upload and file creationrequests can use these pregenerated IDs. Set the
id
fieldin the file metadata.To create pregenerated IDs, call file.generateIdswith the number of IDs to create.
You can safely retry uploads with pregenerated IDs in the case of anindeterminate server error or timeout. If the file was successfullycreated, subsequent retries return a
Note: Pregenerated IDs are not supported for native Google Documentcreation, or uploads where conversion to native Google Document format is requested.HTTP 409
error, they do notcreate duplicate files.Define indexable text for unknown file types
Users can use the Drive UI to search for document content. You can also use thefile.list and the
Note: Indexable text is indexed as HTML. If you save the indexable text stringfullText
field to searchfor content from your app. For further information on searching for files, referto Search for files and folders<section attribute='value1'>Here's some text</section>
, then 'Here's sometext' is indexed, but 'value1' is not.To allow content searches, Drive automatically indexes document contents when itrecognizes the file type. Recognized file types include text documents, PDFs,images with text, and other common types. If your app saves files that Drivedoesn't recognize, you should include text in the
contentHints.indexableText
field of the file. When specifying indexableText
, keep in mind:- Ensure you capture key terms and concepts that you expect a user to searchfor.
- The size limit for
contentHints.indexableText
is 128KiB. - You do not need to order the text in order of importance; the indexerdetermines importance.
- Indexable text should be updated by your application with each save.
- Ensure any
indexableText
actually appears in the contents or metadata ofthe file. Don't try to force a file to appear in search results by includingterms that don't appear in the contents or metadata. Users don't like toperform searches that result in files containing irrelevant content.
Connecting to every server. With an easy to use interface, connect to servers, enterprise file sharing and cloud storage. You can find connection profiles for popular hosting service providers.
![Google Drive Browser Google Drive Browser](https://www.wikihow.com/images/thumb/1/15/Change-Your-YouTube-Password-when-You-Have-Forgotten-It-Step-1.jpg/aid1572874-v4-728px-Change-Your-YouTube-Password-when-You-Have-Forgotten-It-Step-1.jpg)
Cryptomator. Client side encryption with Cryptomator interoperable vaults to secure your data on any server or cloud storage. Version 6
Filename Encryption
File and directory names are encrypted, directory structures are obfuscated.
File and directory names are encrypted, directory structures are obfuscated.
File Content Encryption
Every file gets encrypted individually.
Every file gets encrypted individually.
Secure and Trustworthy with Open Source
No backdoors. No registration or account required.
No backdoors. No registration or account required.
Edit any file with your preferred editor. To edit files, a seamless integration with any external editor application makes it easy to change content quickly. Edit any text or binary file on the server in your preferred application.
Share files.
Web URL
Quickly copy or open the corresponding HTTP URLs of a selected file in your web browser. Includes CDN and pre-signed URLs for S3.
Quickly copy or open the corresponding HTTP URLs of a selected file in your web browser. Includes CDN and pre-signed URLs for S3.
Distribute your content in the cloud. Both Amazon CloudFront and Akamai content delivery networks (CDN) can be easily configured to distribute your files worldwide from edge locations. Connect to any server using FTP, SFTP or WebDAV and configure it as the origin of a new Amazon CloudFront CDN distribution.
Amazon CloudFront
Manage custom origin, basic and streaming CloudFront distributions. Toggle deployment, define CNAMEs, distribution access logging and set the default index file.
Manage custom origin, basic and streaming CloudFront distributions. Toggle deployment, define CNAMEs, distribution access logging and set the default index file.
First class bookmarking. Organize your bookmarks with drag and drop and quickly search using the filter field.
Files
Drag and drop bookmarks to the Finder.app and drop files onto bookmarks to upload.
Drag and drop bookmarks to the Finder.app and drop files onto bookmarks to upload.
Spotlight
Spotlight Importer for bookmark files.
Spotlight Importer for bookmark files.
History
History of visited servers with timestamp of last access.
History of visited servers with timestamp of last access.
Import
Import Bookmarks from third-party applications.
Import Bookmarks from third-party applications.
Browse with ease. Browse and move your files quickly in the browser with caching enabled for the best performance. Works with any character encoding for the correct display of Umlaute, Japanese and Chinese.
Quick LookQuickly preview files with Quick Look. Press the space key to preview files like in Finder.app without explicitly downloading.
AccessibleThe outline view of the browser allows to browse large folder structures efficiently. Cut & paste or drag & drop files to organize.
Transfer anything. Limit the number of concurrent transfers and filter files using a regular expression. Resume both interrupted download and uploads. Recursively transfer directories.
Download and UploadDrag and drop to and from the browser to download and upload.
SynchronizationSynchronize local with remote directories (and vice versa) and get a preview of affected files before any action is taken.
Integration with system technologies. A native citizen of Mac OS X and Windows. Notification center, Gatekeeper and Retina resolution.
KeychainAll passwords are stored in the system Keychain as Internet passwords available also to third party applications. Certificates are validated using the trust settings in the Keychain.
BonjourAuto discovery of FTP & WebDAV services on the local network.
FinderUse Cyberduck as default system wide protocol handler for FTP and SFTP. Open
Notifications.inetloc
files and .duck
bookmark files from the Finder. Notifications in system tray (Windows) and the Notification Center (Mac).
WindowsReads your proxy configuration from network settings. Encrypts passwords limiting access to your account.
We are open. Licensed under the GPL.
Come in. You can follow the daily development activity, have a look at the roadmap and grab the source code on GitHub. We contribute to other open source projects including OpenStack Swift Client Java Bindings, Rococoa Objective-C Wrapper and SSHJ.
International. Speaks your language.
English, čeština, Nederlands, Suomi, Français, Deutsch, Italiano, 日本語, 한국어, Norsk, Slovenčina, Español, Português (do Brasil), Português (Europeu), 中文 (简体), 正體中文 (繁體), Русский, Svenska, Dansk, Język Polski, Magyar, Bahasa Indonesia, Català, Cymraeg, ภาษาไทย, Türkçe, Ivrit, Latviešu Valoda, Ελληνικά, Cрпски, ქართული ენა, Slovenščina, українська мова, Română, Hrvatski & Български език.