ডাউনলোড করুন এবং ফাইল রপ্তানি করুন

গুগল ড্রাইভ এপিআই বিভিন্ন ধরনের ডাউনলোড এবং এক্সপোর্ট অ্যাকশন সমর্থন করে, যেমনটি নিম্নলিখিত টেবিলে তালিকাভুক্ত করা হয়েছে:

ডাউনলোড
alt=media URL প্যারামিটার সহ files.get পদ্ধতি ব্যবহার করে ব্লব ফাইল সামগ্রী।
alt=media URL প্যারামিটার সহ revisions.get পদ্ধতি ব্যবহার করে পূর্ববর্তী সংস্করণে ব্লব ফাইল সামগ্রী।
webContentLink ক্ষেত্র ব্যবহার করে একটি ব্রাউজারে ব্লব ফাইল সামগ্রী।
রপ্তানি
Google Workspace ডকুমেন্ট কন্টেন্ট একটি ফর্ম্যাটে যা আপনার অ্যাপ পরিচালনা করতে পারে, files.export ব্যবহার করে।
exportLinks ফিল্ড ব্যবহার করে ব্রাউজারে Google Workspace ডকুমেন্ট কন্টেন্ট।
exportLinks ফিল্ড ব্যবহার করে ব্রাউজারে আগের ভার্সনে Google Workspace ডকুমেন্ট কন্টেন্ট।

আপনি ফাইল সামগ্রী ডাউনলোড বা রপ্তানি করার আগে, যাচাই করুন যে ব্যবহারকারীরা files রিসোর্সে capabilities.canDownload ক্ষেত্র ব্যবহার করে ফাইলটি ডাউনলোড করতে পারে।

এই গাইডের বাকি অংশে এই ধরনের ডাউনলোড এবং রপ্তানি ক্রিয়া সম্পাদনের জন্য বিস্তারিত নির্দেশাবলী রয়েছে।

ব্লব ফাইল সামগ্রী ডাউনলোড করুন

ড্রাইভে সংরক্ষিত একটি ব্লব ফাইল ডাউনলোড করতে, ডাউনলোড করার জন্য ফাইলের ID এবং alt=media URL প্যারামিটার সহ files.get পদ্ধতি ব্যবহার করুন৷ alt=media URL প্যারামিটার সার্ভারকে বলে যে একটি বিকল্প প্রতিক্রিয়া বিন্যাস হিসাবে সামগ্রী ডাউনলোড করার অনুরোধ করা হচ্ছে।

alt=media URL প্যারামিটার হল একটি সিস্টেম প্যারামিটার যা সমস্ত Google REST API তে উপলব্ধ। আপনি যদি ড্রাইভ API-এর জন্য একটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করেন, তাহলে আপনাকে এই প্যারামিটারটি স্পষ্টভাবে সেট করতে হবে না।

নিম্নলিখিত কোড নমুনা দেখায় কিভাবে ড্রাইভ API ক্লায়েন্ট লাইব্রেরিগুলির সাথে একটি ফাইল ডাউনলোড করতে files.get পদ্ধতি ব্যবহার করতে হয়৷

জাভা

drive/snippets/drive_v3/src/main/java/DownloadFile.java
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
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.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;

/* Class to demonstrate use-case of drive's download file. */
public class DownloadFile {

  /**
   * Download a Document file in PDF format.
   *
   * @param realFileId file ID of any workspace document format file.
   * @return byte array stream if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static ByteArrayOutputStream downloadFile(String realFileId) 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();

    try {
      OutputStream outputStream = new ByteArrayOutputStream();

      service.files().get(realFileId)
          .executeMediaAndDownloadTo(outputStream);

      return (ByteArrayOutputStream) outputStream;
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to move file: " + e.getDetails());
      throw e;
    }
  }
}

পাইথন

drive/snippets/drive-v3/file_snippet/download_file.py
import io

import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaIoBaseDownload


def download_file(real_file_id):
  """Downloads a file
  Args:
      real_file_id: ID of the file to download
  Returns : IO object with location.

  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_id = real_file_id

    # pylint: disable=maybe-no-member
    request = service.files().get_media(fileId=file_id)
    file = io.BytesIO()
    downloader = MediaIoBaseDownload(file, request)
    done = False
    while done is False:
      status, done = downloader.next_chunk()
      print(f"Download {int(status.progress() * 100)}.")

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

  return file.getvalue()


if __name__ == "__main__":
  download_file(real_file_id="1KuPmvGq8yoYgbfW74OENMCB5H0n_2Jm9")

Node.js

drive/snippets/drive_v3/file_snippets/download_file.js
/**
 * Downloads a file
 * @param{string} realFileId file ID
 * @return{obj} file status
 * */
async function downloadFile(realFileId) {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });
  const service = google.drive({version: 'v3', auth});

  fileId = realFileId;
  try {
    const file = await service.files.get({
      fileId: fileId,
      alt: 'media',
    });
    console.log(file.status);
    return file.status;
  } catch (err) {
    // TODO(developer) - Handle error
    throw err;
  }
}

পিএইচপি

drive/snippets/drive_v3/src/DriveDownloadFile.php
use Google\Client;
use Google\Service\Drive;
function downloadFile()
 {
    try {

      $client = new Client();
      $client->useApplicationDefaultCredentials();
      $client->addScope(Drive::DRIVE);
      $driveService = new Drive($client);
      $realFileId = readline("Enter File Id: ");
      $fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
      $fileId = $realFileId;
      $response = $driveService->files->get($fileId, array(
          'alt' => 'media'));
      $content = $response->getBody()->getContents();
      return $content;

    } catch(Exception $e) {
      echo "Error Message: ".$e;
    }

}

.নেট

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

namespace DriveV3Snippets
{
    // Class to demonstrate use-case of drive's download file.
    public class DownloadFile
    {
        /// <summary>
        /// Download a Document file in PDF format.
        /// </summary>
        /// <param name="fileId">file ID of any workspace document format file.</param>
        /// <returns>byte array stream if successful, null otherwise.</returns>
        public static MemoryStream DriveDownloadFile(string fileId)
        {
            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"
                });

                var request = service.Files.Get(fileId);
                var stream = new MemoryStream();

                // Add a handler which will be notified on progress changes.
                // It will notify on each chunk download and when the
                // download is completed or failed.
                request.MediaDownloader.ProgressChanged +=
                    progress =>
                    {
                        switch (progress.Status)
                        {
                            case DownloadStatus.Downloading:
                            {
                                Console.WriteLine(progress.BytesDownloaded);
                                break;
                            }
                            case DownloadStatus.Completed:
                            {
                                Console.WriteLine("Download complete.");
                                break;
                            }
                            case DownloadStatus.Failed:
                            {
                                Console.WriteLine("Download failed.");
                                break;
                            }
                        }
                    };
                request.Download(stream);

                return stream;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

এই কোড নমুনা একটি লাইব্রেরি পদ্ধতি ব্যবহার করে যা অন্তর্নিহিত HTTP অনুরোধে alt=media URL প্যারামিটার যোগ করে।

আপনার অ্যাপ্লিকেশান থেকে শুরু হওয়া ফাইল ডাউনলোডগুলি অবশ্যই একটি সুযোগের সাথে অনুমোদিত হতে হবে যা ফাইল সামগ্রীতে পড়ার অ্যাক্সেসের অনুমতি দেয়৷ উদাহরণস্বরূপ, drive.readonly.metadata স্কোপ ব্যবহার করে একটি অ্যাপ ফাইলের বিষয়বস্তু ডাউনলোড করার জন্য অনুমোদিত নয়। এই কোড নমুনাটি সীমাবদ্ধ "ড্রাইভ" ফাইলের সুযোগ ব্যবহার করে যা ব্যবহারকারীদের আপনার সমস্ত ড্রাইভ ফাইল দেখতে এবং পরিচালনা করতে দেয়৷ ড্রাইভ স্কোপ সম্পর্কে আরও জানতে, Google ড্রাইভ API স্কোপ নির্বাচন করুন দেখুন।

যে ব্যবহারকারীদের সম্পাদনার অনুমতি রয়েছে তারা copyRequiresWriterPermission ক্ষেত্রটিকে false সেট করার মাধ্যমে শুধুমাত্র-পঠন ব্যবহারকারীদের দ্বারা ডাউনলোড সীমিত করতে পারে।

অপমানজনক (যেমন ক্ষতিকারক সফ্টওয়্যার) হিসাবে চিহ্নিত ফাইলগুলি শুধুমাত্র ফাইল মালিক দ্বারা ডাউনলোড করা যায়৷ উপরন্তু, ব্যবহারকারী সম্ভাব্য অবাঞ্ছিত সফ্টওয়্যার বা অন্যান্য অপমানজনক ফাইল ডাউনলোড করার ঝুঁকি স্বীকার করেছে তা নির্দেশ করার জন্য get ক্যোয়ারী প্যারামিটার acknowledgeAbuse=true অন্তর্ভুক্ত করতে হবে। এই ক্যোয়ারী প্যারামিটার ব্যবহার করার আগে আপনার অ্যাপ্লিকেশনটিকে ইন্টারেক্টিভভাবে ব্যবহারকারীকে সতর্ক করা উচিত।

আংশিক ডাউনলোড

আংশিক ডাউনলোড একটি ফাইলের শুধুমাত্র একটি নির্দিষ্ট অংশ ডাউনলোড জড়িত। আপনি Range হেডারের সাথে একটি বাইট পরিসর ব্যবহার করে ফাইলটির যে অংশটি ডাউনলোড করতে চান তা নির্দিষ্ট করতে পারেন। উদাহরণ স্বরূপ:

Range: bytes=500-999

আগের সংস্করণে ব্লব ফাইল সামগ্রী ডাউনলোড করুন

আগের সংস্করণে ব্লব ফাইলের বিষয়বস্তু ডাউনলোড করতে, ডাউনলোড করার জন্য ফাইলের আইডি, রিভিশনের আইডি এবং alt=media URL প্যারামিটার সহ revisions.get পদ্ধতি ব্যবহার করুন। alt=media URL প্যারামিটার সার্ভারকে বলে যে একটি বিকল্প প্রতিক্রিয়া বিন্যাস হিসাবে সামগ্রী ডাউনলোড করার অনুরোধ করা হচ্ছে। files.get এর মতই, revisions.get পদ্ধতিটি ঐচ্ছিক ক্যোয়ারী প্যারামিটার acknowledgeAbuse এবং Range হেডারও গ্রহণ করে। রিভিশন ডাউনলোড করার বিষয়ে আরও তথ্যের জন্য, ফাইল রিভিশন ডাউনলোড এবং প্রকাশ করুন দেখুন।

একটি ব্রাউজারে ব্লব ফাইল সামগ্রী ডাউনলোড করুন

একটি ব্রাউজারে ড্রাইভে সংরক্ষিত ব্লব ফাইলের বিষয়বস্তু ডাউনলোড করতে API এর পরিবর্তে, files রিসোর্সের webContentLink ক্ষেত্রটি ব্যবহার করুন৷ যদি ব্যবহারকারীর ফাইলটিতে ডাউনলোড অ্যাক্সেস থাকে, ফাইলটি ডাউনলোড করার জন্য একটি লিঙ্ক এবং এর বিষয়বস্তু ফেরত দেওয়া হয়। আপনি হয় এই URL-এ একজন ব্যবহারকারীকে পুনঃনির্দেশ করতে পারেন, অথবা এটিকে একটি ক্লিকযোগ্য লিঙ্ক হিসাবে অফার করতে পারেন৷

Google Workspace ডকুমেন্ট কন্টেন্ট এক্সপোর্ট করুন

Google Workspace ডকুমেন্টের বাইট কন্টেন্ট এক্সপোর্ট করতে, ফাইলের আইডি সহ files.export পদ্ধতি ব্যবহার করুন এবং সঠিক MIME প্রকার । রপ্তানি করা বিষয়বস্তু 10 MB পর্যন্ত সীমাবদ্ধ।

ড্রাইভ এপিআই ক্লায়েন্ট লাইব্রেরি ব্যবহার করে পিডিএফ ফরম্যাটে Google Workspace ডকুমেন্ট এক্সপোর্ট করতে files.export পদ্ধতি কীভাবে ব্যবহার করতে হয় তা নিম্নলিখিত কোড নমুনাটি দেখায়:

জাভা

drive/snippets/drive_v3/src/main/java/ExportPdf.java
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
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.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;

/* Class to demonstrate use-case of drive's export pdf. */
public class ExportPdf {

  /**
   * Download a Document file in PDF format.
   *
   * @param realFileId file ID of any workspace document format file.
   * @return byte array stream if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static ByteArrayOutputStream exportPdf(String realFileId) 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();

    OutputStream outputStream = new ByteArrayOutputStream();
    try {
      service.files().export(realFileId, "application/pdf")
          .executeMediaAndDownloadTo(outputStream);

      return (ByteArrayOutputStream) outputStream;
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to export file: " + e.getDetails());
      throw e;
    }
  }
}

পাইথন

drive/snippets/drive-v3/file_snippet/export_pdf.py
import io

import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaIoBaseDownload


def export_pdf(real_file_id):
  """Download a Document file in PDF format.
  Args:
      real_file_id : file ID of any workspace document format file
  Returns : IO object with location

  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_id = real_file_id

    # pylint: disable=maybe-no-member
    request = service.files().export_media(
        fileId=file_id, mimeType="application/pdf"
    )
    file = io.BytesIO()
    downloader = MediaIoBaseDownload(file, request)
    done = False
    while done is False:
      status, done = downloader.next_chunk()
      print(f"Download {int(status.progress() * 100)}.")

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

  return file.getvalue()


if __name__ == "__main__":
  export_pdf(real_file_id="1zbp8wAyuImX91Jt9mI-CAX_1TqkBLDEDcr2WeXBbKUY")

Node.js

drive/snippets/drive_v3/file_snippets/export_pdf.js
/**
 * Download a Document file in PDF format
 * @param{string} fileId file ID
 * @return{obj} file status
 * */
async function exportPdf(fileId) {
  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});

  try {
    const result = await service.files.export({
      fileId: fileId,
      mimeType: 'application/pdf',
    });
    console.log(result.status);
    return result;
  } catch (err) {
    // TODO(developer) - Handle error
    throw err;
  }
}

পিএইচপি

drive/snippets/drive_v3/src/DriveExportPdf.php
use Google\Client;
use Google\Service\Drive;
function exportPdf()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);
        $realFileId = readline("Enter File Id: ");
        $fileId = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo';
        $fileId = $realFileId;
        $response = $driveService->files->export($fileId, 'application/pdf', array(
            'alt' => 'media'));
        $content = $response->getBody()->getContents();
        return $content;

    }  catch(Exception $e) {
         echo "Error Message: ".$e;
    }

}

.নেট

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

namespace DriveV3Snippets
{
    // Class to demonstrate use of Drive export pdf
    public class ExportPdf
    {
        /// <summary>
        /// Download a Document file in PDF format.
        /// </summary>
        /// <param name="fileId">Id of the file.</param>
        /// <returns>Byte array stream if successful, null otherwise</returns>
        public static MemoryStream DriveExportPdf(string fileId)
        {
            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"
                });

                var request = service.Files.Export(fileId, "application/pdf");
                var stream = new MemoryStream();
                // Add a handler which will be notified on progress changes.
                // It will notify on each chunk download and when the
                // download is completed or failed.
                request.MediaDownloader.ProgressChanged +=
                    progress =>
                    {
                        switch (progress.Status)
                        {
                            case DownloadStatus.Downloading:
                            {
                                Console.WriteLine(progress.BytesDownloaded);
                                break;
                            }
                            case DownloadStatus.Completed:
                            {
                                Console.WriteLine("Download complete.");
                                break;
                            }
                            case DownloadStatus.Failed:
                            {
                                Console.WriteLine("Download failed.");
                                break;
                            }
                        }
                    };
                request.Download(stream);
                return stream;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

এই কোড নমুনাটি সীমাবদ্ধ drive সুযোগ ব্যবহার করে যা ব্যবহারকারীদের আপনার সমস্ত ড্রাইভ ফাইল দেখতে এবং পরিচালনা করতে দেয়। ড্রাইভ স্কোপ সম্পর্কে আরও জানতে, Google ড্রাইভ API স্কোপ নির্বাচন করুন দেখুন।

কোড নমুনা রপ্তানি MIME প্রকারকে application/pdf হিসাবে ঘোষণা করে। প্রতিটি Google Workspace ডকুমেন্টের জন্য সমর্থিত সমস্ত এক্সপোর্ট MIME প্রকারের সম্পূর্ণ তালিকার জন্য, Google Workspace ডকুমেন্টের জন্য এক্সপোর্ট MIME প্রকার দেখুন।

ব্রাউজারে Google Workspace ডকুমেন্ট কন্টেন্ট এক্সপোর্ট করুন

ব্রাউজারের মধ্যে Google Workspace ডকুমেন্ট কন্টেন্ট এক্সপোর্ট করতে, files রিসোর্সের exportLinks ফিল্ড ব্যবহার করুন। নথির প্রকারের উপর নির্ভর করে, উপলব্ধ প্রতিটি MIME প্রকারের জন্য ফাইল এবং এর বিষয়বস্তু ডাউনলোড করার জন্য একটি লিঙ্ক ফেরত দেওয়া হয়। আপনি হয় একজন ব্যবহারকারীকে একটি URL-এ পুনঃনির্দেশ করতে পারেন, অথবা এটি একটি ক্লিকযোগ্য লিঙ্ক হিসাবে অফার করতে পারেন৷

ব্রাউজারে আগের ভার্সনে Google Workspace ডকুমেন্ট কন্টেন্ট এক্সপোর্ট করুন

ব্রাউজারের মধ্যে আগের ভার্সনে Google Workspace ডকুমেন্ট কন্টেন্ট এক্সপোর্ট করতে, ডাউনলোড করার জন্য ফাইলের আইডি এবং রিভিশনের আইডি সহ revisions.get পদ্ধতি ব্যবহার করুন। যদি ব্যবহারকারীর ফাইলটিতে ডাউনলোড অ্যাক্সেস থাকে, ফাইলটি ডাউনলোড করার জন্য একটি লিঙ্ক এবং এর বিষয়বস্তু ফেরত দেওয়া হয়। আপনি হয় এই URL-এ একজন ব্যবহারকারীকে পুনঃনির্দেশ করতে পারেন, অথবা এটিকে একটি ক্লিকযোগ্য লিঙ্ক হিসাবে অফার করতে পারেন৷