Using files

Gemini API از آپلود فایل‌های رسانه جدا از ورودی سریع پشتیبانی می‌کند و به شما اجازه می‌دهد تا در چندین درخواست و چندین درخواست مجدداً از رسانه شما استفاده شود. برای جزئیات بیشتر، راهنمای درخواست با رسانه را بررسی کنید.

روش: media.upload

یک File ایجاد می کند.

نقطه پایانی

  • URI آپلود، برای درخواست های آپلود رسانه:
  • پست https: / /generativelanguage.googleapis.com /upload /v1beta /files
  • URI فراداده، برای درخواست‌های فقط فراداده:
  • پست https: / /generativelanguage.googleapis.com /v1beta /files

    درخواست بدن

    بدنه درخواست حاوی داده هایی با ساختار زیر است:

    فیلدها
    شی file object ( File )

    اختیاری. فراداده برای ایجاد فایل

    درخواست نمونه

    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "Cajun_instruments.jpg")
    print(f"{myfile=}")
    
    result = client.models.generate_content(
        model="gemini-2.0-flash",
        contents=[
            myfile,
            "\n\n",
            "Can you tell me about the instruments in this photo?",
        ],
    )
    print(f"{result.text=}")
    // Make sure to include the following import:
    // import {GoogleGenAI} from '@google/genai';
    const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
    const myfile = await ai.files.upload({
      file: path.join(media, "Cajun_instruments.jpg"),
      config: { mimeType: "image/jpeg" },
    });
    console.log("Uploaded file:", myfile);
    
    const result = await ai.models.generateContent({
      model: "gemini-2.0-flash",
      contents: createUserContent([
        createPartFromUri(myfile.uri, myfile.mimeType),
        "\n\n",
        "Can you tell me about the instruments in this photo?",
      ]),
    });
    console.log("result.text=", result.text);
    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "Cajun_instruments.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Can you tell me about the instruments in this photo?"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)
    MIME_TYPE=$(file -b --mime-type "${IMG_PATH_2}")
    NUM_BYTES=$(wc -c < "${IMG_PATH_2}")
    DISPLAY_NAME=TEXT
    
    tmp_header_file=upload-header.tmp
    
    # Initial resumable request defining metadata.
    # The upload url is in the response headers dump them to a file.
    curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
      -D upload-header.tmp \
      -H "X-Goog-Upload-Protocol: resumable" \
      -H "X-Goog-Upload-Command: start" \
      -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
      -H "Content-Type: application/json" \
      -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
    
    upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
    rm "${tmp_header_file}"
    
    # Upload the actual bytes.
    curl "${upload_url}" \
      -H "Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Offset: 0" \
      -H "X-Goog-Upload-Command: upload, finalize" \
      --data-binary "@${IMG_PATH_2}" 2> /dev/null > file_info.json
    
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri
    
    # Now generate content using that file
    curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
        -H 'Content-Type: application/json' \
        -X POST \
        -d '{
          "contents": [{
            "parts":[
              {"text": "Can you tell me about the instruments in this photo?"},
              {"file_data":
                {"mime_type": "image/jpeg", 
                "file_uri": '$file_uri'}
            }]
            }]
           }' 2> /dev/null > response.json
    
    cat response.json
    echo
    
    jq ".candidates[].content.parts[].text" response.json
    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "sample.mp3")
    print(f"{myfile=}")
    
    result = client.models.generate_content(
        model="gemini-2.0-flash", contents=[myfile, "Describe this audio clip"]
    )
    print(f"{result.text=}")
    // Make sure to include the following import:
    // import {GoogleGenAI} from '@google/genai';
    const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
    const myfile = await ai.files.upload({
      file: path.join(media, "sample.mp3"),
      config: { mimeType: "audio/mpeg" },
    });
    console.log("Uploaded file:", myfile);
    
    const result = await ai.models.generateContent({
      model: "gemini-2.0-flash",
      contents: createUserContent([
        createPartFromUri(myfile.uri, myfile.mimeType),
        "Describe this audio clip",
      ]),
    });
    console.log("result.text=", result.text);
    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "sample.mp3"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this audio clip"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)
    MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
    NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
    DISPLAY_NAME=AUDIO
    
    tmp_header_file=upload-header.tmp
    
    # Initial resumable request defining metadata.
    # The upload url is in the response headers dump them to a file.
    curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
      -D upload-header.tmp \
      -H "X-Goog-Upload-Protocol: resumable" \
      -H "X-Goog-Upload-Command: start" \
      -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
      -H "Content-Type: application/json" \
      -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
    
    upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
    rm "${tmp_header_file}"
    
    # Upload the actual bytes.
    curl "${upload_url}" \
      -H "Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Offset: 0" \
      -H "X-Goog-Upload-Command: upload, finalize" \
      --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json
    
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri
    
    # Now generate content using that file
    curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
        -H 'Content-Type: application/json' \
        -X POST \
        -d '{
          "contents": [{
            "parts":[
              {"text": "Describe this audio clip"},
              {"file_data":{"mime_type": "audio/mp3", "file_uri": '$file_uri'}}]
            }]
           }' 2> /dev/null > response.json
    
    cat response.json
    echo
    
    jq ".candidates[].content.parts[].text" response.json
    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "poem.txt")
    print(f"{myfile=}")
    
    result = client.models.generate_content(
        model="gemini-2.0-flash",
        contents=[myfile, "\n\n", "Can you add a few more lines to this poem?"],
    )
    print(f"{result.text=}")
    // Make sure to include the following import:
    // import {GoogleGenAI} from '@google/genai';
    const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
    const myfile = await ai.files.upload({
      file: path.join(media, "poem.txt"),
    });
    console.log("Uploaded file:", myfile);
    
    const result = await ai.models.generateContent({
      model: "gemini-2.0-flash",
      contents: createUserContent([
        createPartFromUri(myfile.uri, myfile.mimeType),
        "\n\n",
        "Can you add a few more lines to this poem?",
      ]),
    });
    console.log("result.text=", result.text);
    // Set MIME type explicitly for text files - the service may have difficulty
    // distingushing between different MIME types of text files automatically.
    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "poem.txt"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Can you add a few more lines to this poem?"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)
    MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}")
    NUM_BYTES=$(wc -c < "${TEXT_PATH}")
    DISPLAY_NAME=TEXT
    
    tmp_header_file=upload-header.tmp
    
    # Initial resumable request defining metadata.
    # The upload url is in the response headers dump them to a file.
    curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
      -D upload-header.tmp \
      -H "X-Goog-Upload-Protocol: resumable" \
      -H "X-Goog-Upload-Command: start" \
      -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
      -H "Content-Type: application/json" \
      -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
    
    upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
    rm "${tmp_header_file}"
    
    # Upload the actual bytes.
    curl "${upload_url}" \
      -H "Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Offset: 0" \
      -H "X-Goog-Upload-Command: upload, finalize" \
      --data-binary "@${TEXT_PATH}" 2> /dev/null > file_info.json
    
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri
    
    # Now generate content using that file
    curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
        -H 'Content-Type: application/json' \
        -X POST \
        -d '{
          "contents": [{
            "parts":[
              {"text": "Can you add a few more lines to this poem?"},
              {"file_data":{"mime_type": "text/plain", "file_uri": '$file_uri'}}]
            }]
           }' 2> /dev/null > response.json
    
    cat response.json
    echo
    
    jq ".candidates[].content.parts[].text" response.json
    
    name=$(jq ".file.name" file_info.json)
    # Get the file of interest to check state
    curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
    # Print some information about the file you got
    name=$(jq ".file.name" file_info.json)
    echo name=$name
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri
    
    curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GEMINI_API_KEY
    
    from google import genai
    import time
    
    client = genai.Client()
    # Video clip (CC BY 3.0) from https://peach.blender.org/download/
    myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
    print(f"{myfile=}")
    
    # Videos need to be processed before you can use them.
    while myfile.state.name == "PROCESSING":
        print("processing video...")
        time.sleep(5)
        myfile = client.files.get(name=myfile.name)
    
    result = client.models.generate_content(
        model="gemini-2.0-flash", contents=[myfile, "Describe this video clip"]
    )
    print(f"{result.text=}")
    // Make sure to include the following import:
    // import {GoogleGenAI} from '@google/genai';
    const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
    let myfile = await ai.files.upload({
      file: path.join(media, "Big_Buck_Bunny.mp4"),
      config: { mimeType: "video/mp4" },
    });
    console.log("Uploaded video file:", myfile);
    
    // Poll until the video file is completely processed (state becomes ACTIVE).
    while (!myfile.state || myfile.state.toString() !== "ACTIVE") {
      console.log("Processing video...");
      console.log("File state: ", myfile.state);
      await sleep(5000);
      myfile = await ai.files.get({ name: myfile.name });
    }
    
    const result = await ai.models.generateContent({
      model: "gemini-2.0-flash",
      contents: createUserContent([
        createPartFromUri(myfile.uri, myfile.mimeType),
        "Describe this video clip",
      ]),
    });
    console.log("result.text=", result.text);
    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "earth.mp4"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    // Videos need to be processed before you can use them.
    for file.State == genai.FileStateProcessing {
    	log.Printf("processing %s", file.Name)
    	time.Sleep(5 * time.Second)
    	var err error
    	if file, err = client.GetFile(ctx, file.Name); err != nil {
    		log.Fatal(err)
    	}
    }
    if file.State != genai.FileStateActive {
    	log.Fatalf("uploaded file has state %s, not active", file.State)
    }
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this video clip"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)
    MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
    NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
    DISPLAY_NAME=VIDEO_PATH
    
    # Initial resumable request defining metadata.
    # The upload url is in the response headers dump them to a file.
    curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
      -D upload-header.tmp \
      -H "X-Goog-Upload-Protocol: resumable" \
      -H "X-Goog-Upload-Command: start" \
      -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
      -H "Content-Type: application/json" \
      -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
    
    upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
    rm "${tmp_header_file}"
    
    # Upload the actual bytes.
    curl "${upload_url}" \
      -H "Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Offset: 0" \
      -H "X-Goog-Upload-Command: upload, finalize" \
      --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json
    
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri
    
    state=$(jq ".file.state" file_info.json)
    echo state=$state
    
    # Ensure the state of the video is 'ACTIVE'
    while [[ "($state)" = *"PROCESSING"* ]];
    do
      echo "Processing video..."
      sleep 5
      # Get the file of interest to check state
      curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
      state=$(jq ".file.state" file_info.json)
    done
    
    # Now generate content using that file
    curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
        -H 'Content-Type: application/json' \
        -X POST \
        -d '{
          "contents": [{
            "parts":[
              {"text": "Describe this video clip"},
              {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
            }]
           }' 2> /dev/null > response.json
    
    cat response.json
    echo
    
    jq ".candidates[].content.parts[].text" response.json
    پایتون
    from google import genai
    
    client = genai.Client()
    sample_pdf = client.files.upload(file=media / "test.pdf")
    response = client.models.generate_content(
        model="gemini-2.0-flash",
        contents=["Give me a summary of this pdf file.", sample_pdf],
    )
    print(response.text)

    بدن پاسخگو

    پاسخ برای media.upload .

    در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

    فیلدها
    شی file object ( File )

    متادیتا برای فایل ایجاد شده

    نمایندگی JSON
    {
      "file": {
        object (File)
      }
    }

    روش: files.get

    فراداده را برای File داده شده دریافت می کند.

    نقطه پایانی

    https: / /generativelanguage.googleapis.com /v1beta /{name=files /*} را دریافت کنید

    پارامترهای مسیر

    string name

    مورد نیاز. نام File که باید دریافت کنید. مثال: files/abc-123 به شکل files/{file} است.

    درخواست بدن

    بدنه درخواست باید خالی باشد.

    درخواست نمونه

    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "poem.txt")
    file_name = myfile.name
    print(file_name)  # "files/*"
    
    myfile = client.files.get(name=file_name)
    print(myfile)
    // Make sure to include the following import:
    // import {GoogleGenAI} from '@google/genai';
    const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
    const myfile = await ai.files.upload({
      file: path.join(media, "poem.txt"),
    });
    const fileName = myfile.name;
    console.log(fileName);
    
    const fetchedFile = await ai.files.get({ name: fileName });
    console.log(fetchedFile);
    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "personWorkingOnComputer.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    gotFile, err := client.GetFile(ctx, file.Name)
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println("Got file:", gotFile.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this image"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)
    name=$(jq ".file.name" file_info.json)
    # Get the file of interest to check state
    curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
    # Print some information about the file you got
    name=$(jq ".file.name" file_info.json)
    echo name=$name
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri

    بدن پاسخگو

    در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی نمونه ای از File است.

    روش: files.list

    فراداده File های متعلق به پروژه درخواست کننده را فهرست می کند.

    نقطه پایانی

    https: / /generativelanguage.googleapis.com /v1beta /files دریافت کنید

    پارامترهای پرس و جو

    pageSize integer

    اختیاری. حداکثر تعداد File برای بازگشت در هر صفحه. اگر مشخص نشده باشد، پیش‌فرض 10 است. حداکثر pageSize 100 است.

    string pageToken

    اختیاری. نشانه صفحه از تماس قبلی files.list .

    درخواست بدن

    بدنه درخواست باید خالی باشد.

    درخواست نمونه

    from google import genai
    
    client = genai.Client()
    print("My files:")
    for f in client.files.list():
        print("  ", f.name)
    // Make sure to include the following import:
    // import {GoogleGenAI} from '@google/genai';
    const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
    console.log("My files:");
    // Using the pager style to list files
    const pager = await ai.files.list({ config: { pageSize: 10 } });
    let page = pager.page;
    const names = [];
    while (true) {
      for (const f of page) {
        console.log("  ", f.name);
        names.push(f.name);
      }
      if (!pager.hasNextPage()) break;
      page = await pager.nextPage();
    }
    iter := client.ListFiles(ctx)
    for {
    	ifile, err := iter.Next()
    	if err == iterator.Done {
    		break
    	}
    	if err != nil {
    		log.Fatal(err)
    	}
    	fmt.Println(ifile.Name)
    }
    echo "My files: "
    
    curl "https://generativelanguage.googleapis.com/v1beta/files?key=$GEMINI_API_KEY"

    بدن پاسخگو

    پاسخ برای files.list .

    در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

    فیلدها
    files[] object ( File )

    لیست File s.

    string nextPageToken

    نشانه ای که می تواند به عنوان pageToken به فراخوانی files.list بعدی ارسال شود.

    نمایندگی JSON
    {
      "files": [
        {
          object (File)
        }
      ],
      "nextPageToken": string
    }

    روش: files.delete

    File را حذف می کند.

    نقطه پایانی

    حذف https: / /generativelanguage.googleapis.com /v1beta /{name=files /*}

    پارامترهای مسیر

    string name

    مورد نیاز. نام File مورد نظر برای حذف مثال: files/abc-123 به شکل files/{file} است.

    درخواست بدن

    بدنه درخواست باید خالی باشد.

    درخواست نمونه

    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "poem.txt")
    
    client.files.delete(name=myfile.name)
    
    try:
        result = client.models.generate_content(
            model="gemini-2.0-flash", contents=[myfile, "Describe this file."]
        )
        print(result)
    except genai.errors.ClientError:
        pass
    // The Gen AI SDK for TypeScript and JavaScript is in preview.
    // Some features have not been implemented.
    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "personWorkingOnComputer.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    gotFile, err := client.GetFile(ctx, file.Name)
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println("Got file:", gotFile.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this image"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)
    curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GEMINI_API_KEY

    بدن پاسخگو

    در صورت موفقیت آمیز بودن، بدنه پاسخ یک شی JSON خالی است.

    منبع REST: فایل ها

    منبع: فایل

    فایلی که در API آپلود شده است. شناسه بعدی: 15

    فیلدها
    string name

    تغییرناپذیر. شناسه. نام منبع File شناسه (نام بدون پیشوند "files/") می‌تواند تا 40 کاراکتر داشته باشد که حروف عددی کوچک یا خط تیره (-) هستند. شناسه نمی تواند با خط تیره شروع یا پایان یابد. اگر نام در ایجاد خالی باشد، یک نام منحصر به فرد ایجاد می شود. مثال: files/123-456

    string displayName

    اختیاری. نام نمایشی قابل خواندن توسط انسان برای File . نام نمایشی نباید بیش از 512 کاراکتر به همراه فاصله باشد. مثال: "تصویر خوش آمدگویی"

    string mimeType

    فقط خروجی نوع MIME فایل

    رشته sizeBytes string ( int64 format)

    فقط خروجی حجم فایل بر حسب بایت

    رشته createTime string ( Timestamp format)

    فقط خروجی مهر زمانی زمانی که File ایجاد شد.

    از RFC 3339 استفاده می کند، که در آن خروجی تولید شده همیشه با Z نرمال می شود و از 0، 3، 6 یا 9 رقم کسری استفاده می کند. افست های غیر از "Z" نیز پذیرفته می شود. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

    رشته updateTime string ( Timestamp format)

    فقط خروجی مهر زمانی آخرین به‌روزرسانی File .

    از RFC 3339 استفاده می کند، که در آن خروجی تولید شده همیشه با Z نرمال می شود و از 0، 3، 6 یا 9 رقم کسری استفاده می کند. افست های غیر از "Z" نیز پذیرفته می شود. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

    رشته expirationTime string ( Timestamp format)

    فقط خروجی مهر زمانی زمانی که File حذف خواهد شد. فقط در صورتی تنظیم کنید که File برنامه ریزی شده منقضی شود.

    از RFC 3339 استفاده می کند، که در آن خروجی تولید شده همیشه با Z نرمال می شود و از 0، 3، 6 یا 9 رقم کسری استفاده می کند. افست های غیر از "Z" نیز پذیرفته می شود. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

    رشته هش sha256Hash string ( bytes format)

    فقط خروجی SHA-256 هش بایت های آپلود شده.

    رشته ای با کد base64.

    string uri

    فقط خروجی uri of the File .

    downloadUri string

    فقط خروجی uri دانلود File .

    state enum ( State )

    فقط خروجی وضعیت پردازش فایل

    شماره source enum ( Source )

    منبع فایل

    موضوع error object ( Status )

    فقط خروجی اگر پردازش فایل انجام نشد، وضعیت خطا.

    Union type metadata
    فراداده برای فایل metadata تنها می تواند یکی از موارد زیر باشد:
    شئ videoMetadata object ( VideoMetadata )

    فقط خروجی فراداده برای یک ویدیو.

    نمایندگی JSON
    {
      "name": string,
      "displayName": string,
      "mimeType": string,
      "sizeBytes": string,
      "createTime": string,
      "updateTime": string,
      "expirationTime": string,
      "sha256Hash": string,
      "uri": string,
      "downloadUri": string,
      "state": enum (State),
      "source": enum (Source),
      "error": {
        object (Status)
      },
    
      // metadata
      "videoMetadata": {
        object (VideoMetadata)
      }
      // Union type
    }

    داده های ویدیویی

    فراداده برای یک File ویدیویی.

    فیلدها
    رشته videoDuration string ( Duration format)

    مدت زمان ویدیو.

    مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' s ' ختم می شود. مثال: "3.5s" .

    نمایندگی JSON
    {
      "videoDuration": string
    }

    ایالت

    وضعیت برای چرخه حیات یک فایل.

    Enums
    STATE_UNSPECIFIED مقدار پیش فرض اگر حالت حذف شود از این مقدار استفاده می شود.
    PROCESSING فایل در حال پردازش است و هنوز نمی توان از آن برای استنتاج استفاده کرد.
    ACTIVE فایل پردازش شده و برای استنباط در دسترس است.
    FAILED فایل پردازش نشد.

    منبع

    Enums
    SOURCE_UNSPECIFIED اگر منبع مشخص نشده باشد استفاده می شود.
    UPLOADED نشان می دهد که فایل توسط کاربر آپلود شده است.
    GENERATED نشان می دهد که فایل توسط گوگل تولید شده است.

    وضعیت

    نوع Status یک مدل خطای منطقی را تعریف می کند که برای محیط های برنامه نویسی مختلف، از جمله REST API و RPC API مناسب است. توسط gRPC استفاده می شود. هر پیام Status شامل سه داده است: کد خطا، پیام خطا و جزئیات خطا.

    در راهنمای طراحی API می‌توانید درباره این مدل خطا و نحوه کار با آن اطلاعات بیشتری کسب کنید.

    فیلدها
    integer code

    کد وضعیت، که باید مقداری از google.rpc.Code باشد.

    string message

    یک پیغام خطای برنامه‌نویس، که باید به زبان انگلیسی باشد. هر پیام خطای کاربر باید بومی سازی شده و در قسمت google.rpc.Status.details ارسال شود یا توسط مشتری بومی سازی شود.

    details[] object

    لیستی از پیام هایی که حاوی جزئیات خطا هستند. مجموعه ای متداول از انواع پیام ها برای استفاده API ها وجود دارد.

    یک شی حاوی فیلدهایی از نوع دلخواه. یک فیلد اضافی "@type" حاوی یک URI است که نوع را مشخص می کند. مثال: { "id": 1234, "@type": "types.example.com/standard/id" } .

    نمایندگی JSON
    {
      "code": integer,
      "message": string,
      "details": [
        {
          "@type": string,
          field1: ...,
          ...
        }
      ]
    }