insert method

Future<File> insert(
  1. File request, {
  2. bool? convert,
  3. bool? enforceSingleParent,
  4. String? includeLabels,
  5. String? includePermissionsForView,
  6. bool? ocr,
  7. String? ocrLanguage,
  8. bool? pinned,
  9. bool? supportsAllDrives,
  10. bool? supportsTeamDrives,
  11. String? timedTextLanguage,
  12. String? timedTextTrackName,
  13. bool? useContentAsIndexableText,
  14. String? visibility,
  15. String? $fields,
  16. UploadOptions uploadOptions = commons.UploadOptions.defaultOptions,
  17. Media? uploadMedia,
})

Inserts a new file.

This method supports an * / upload* URI and accepts uploaded media with the following characteristics: - Maximum file size: 5,120 GB - Accepted Media MIME types:* / * Note: Specify a valid MIME type, rather than the literal * / * value. The literal * / * is only used to indicate that any valid MIME type can be uploaded. For more information on uploading files, see [Upload file data](/workspace/drive/api/guides/manage-uploads). Apps creating shortcuts with files.insert must specify the MIME type application/vnd.google-apps.shortcut. Apps should specify a file extension in the title property when inserting files with the API. For example, an operation to insert a JPEG file should specify something like "title": "cat.jpg" in the metadata. Subsequent GET requests include the read-only fileExtension property populated with the extension originally specified in the title property. When a Google Drive user requests to download a file, or when the file is downloaded through the sync client, Drive builds a full filename (with extension) based on the title. In cases where the extension is missing, Drive attempts to determine the extension based on the file's MIME type.

request - The metadata request object.

Request parameters:

convert - Whether to convert this file to the corresponding Docs Editors format.

enforceSingleParent - Deprecated: Creating files in multiple folders is no longer supported.

includeLabels - A comma-separated list of IDs of labels to include in the labelInfo part of the response.

includePermissionsForView - Specifies which additional view's permissions to include in the response. Only published is supported.

ocr - Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.

ocrLanguage - If ocr is true, hints at the language to use. Valid values are BCP 47 codes.

pinned - Whether to pin the head revision of the uploaded file. A file can have a maximum of 200 pinned revisions.

supportsAllDrives - Whether the requesting application supports both My Drives and shared drives.

supportsTeamDrives - Deprecated: Use supportsAllDrives instead.

timedTextLanguage - The language of the timed text.

timedTextTrackName - The timed text track name.

useContentAsIndexableText - Whether to use the content as indexable text.

visibility - The visibility of the new file. Permissions are still inherited from parent folders. This parameter is only relevant when convert=false. Possible string values are:

  • "DEFAULT" : The visibility of the new file is determined by the user's default visibility or sharing policies.
  • "PRIVATE" : The user's default visibility or sharing policies are ignored, and the new file is only visible to the owner and any users with permissions inherited from the parent folder.

$fields - Selector specifying which fields to include in a partial response.

uploadMedia - The media to upload.

uploadOptions - Options for the media upload. Streaming Media without the length being known ahead of time is only supported via resumable uploads.

Completes with a File.

Completes with a commons.ApiRequestError if the API endpoint returned an error.

If the used http.Client completes with an error when making a REST call, this method will complete with the same error.

Implementation

async.Future<File> insert(
  File request, {
  core.bool? convert,
  core.bool? enforceSingleParent,
  core.String? includeLabels,
  core.String? includePermissionsForView,
  core.bool? ocr,
  core.String? ocrLanguage,
  core.bool? pinned,
  core.bool? supportsAllDrives,
  core.bool? supportsTeamDrives,
  core.String? timedTextLanguage,
  core.String? timedTextTrackName,
  core.bool? useContentAsIndexableText,
  core.String? visibility,
  core.String? $fields,
  commons.UploadOptions uploadOptions = commons.UploadOptions.defaultOptions,
  commons.Media? uploadMedia,
}) async {
  final body_ = convert_1.json.encode(request);
  final queryParams_ = <core.String, core.List<core.String>>{
    'convert': ?convert == null ? null : ['${convert}'],
    'enforceSingleParent': ?enforceSingleParent == null
        ? null
        : ['${enforceSingleParent}'],
    'includeLabels': ?includeLabels == null ? null : [includeLabels],
    'includePermissionsForView': ?includePermissionsForView == null
        ? null
        : [includePermissionsForView],
    'ocr': ?ocr == null ? null : ['${ocr}'],
    'ocrLanguage': ?ocrLanguage == null ? null : [ocrLanguage],
    'pinned': ?pinned == null ? null : ['${pinned}'],
    'supportsAllDrives': ?supportsAllDrives == null
        ? null
        : ['${supportsAllDrives}'],
    'supportsTeamDrives': ?supportsTeamDrives == null
        ? null
        : ['${supportsTeamDrives}'],
    'timedTextLanguage': ?timedTextLanguage == null
        ? null
        : [timedTextLanguage],
    'timedTextTrackName': ?timedTextTrackName == null
        ? null
        : [timedTextTrackName],
    'useContentAsIndexableText': ?useContentAsIndexableText == null
        ? null
        : ['${useContentAsIndexableText}'],
    'visibility': ?visibility == null ? null : [visibility],
    'fields': ?$fields == null ? null : [$fields],
  };

  core.String url_;
  if (uploadMedia == null) {
    url_ = 'files';
  } else if (uploadOptions is commons.ResumableUploadOptions) {
    url_ = '/resumable/upload/drive/v2/files';
  } else {
    url_ = '/upload/drive/v2/files';
  }

  final response_ = await _requester.request(
    url_,
    'POST',
    body: body_,
    queryParams: queryParams_,
    uploadMedia: uploadMedia,
    uploadOptions: uploadOptions,
  );
  return File.fromJson(response_ as core.Map<core.String, core.dynamic>);
}