ورود / ثبت نام
0
0

آپلود فایل در Google Drive با استفاده از Google Drive API در ASP.Net

472 بازدید
Google Drive API

Google Drive API

در این مقاله آموزش می دهیم که چگونه با زبان های C# و VB.Net فایل ها را با استفاده از Google Drive API در Google Drive آپلود کنیم.

جهت استفاده از Google Drive API برای آپلود فایل ها در Google Drive باید یک اپلیکیشن در Google Console ایجاد کنیم و Client ID و Client Secret دریافت کنیم.

Google Drive API

دانلود فایل ASPSnippets.GoogleAPI DLL:

این dll به همراه سورس در انتهای مطلب برای دانلود قرار داده شده است.

بخش HTML

طراحی ما شامل یک کنترل FileUpload، TextBox و Button برای آپلود فایل به همراه توضیح آن در Google Drive، می باشد. همچنین شامل یک جدول با چندین lable برای نمایش جزئیات فایل آپلودشده است.

<asp:FileUploadID="FileUpload1"runat="server"/>
<br/>
<br/>
توضیحات:<br/>
<asp:TextBoxID="txtDescription"runat="server"Width="300"></asp:TextBox>
<br/>
<br/>
<asp:ButtonID="btnUpload"runat="server"Text="Upload"OnClick="UploadFile"/>
<hr/>
<tableid="tblFileDetails"runat="server"visible="false"border="0"cellpadding="0"
cellspacing="0">
<tr>
<td>
عنوان</td>
<td>
<asp:LabelID="lblTitle"runat="server"/>
</td>
</tr>
<tr>
<td>
                Id
</td>
<td>
<asp:LabelID="lblId"runat="server"/>
</td>
</tr>
<tr>
<td>
آیکون
</td>
<td>
<asp:ImageID="imgIcon"runat="server"/>
</td>
</tr>
<trid="rowThumbnail"runat="server"visible="false">
<tdvalign="top">
                Thumbnail
</td>
<td>
<asp:ImageID="imgThumbnail"runat="server"Height="60"Width="60"/>
</td>
</tr>
<tr>
<td>
زمانایجاد
</td>
<td>
<asp:LabelID="lblCreatedDate"runat="server"/>
</td>
</tr>
<tr>
<td>
دانلود
</td>
<td>
<asp:HyperLinkID="lnkDownload"Text="Download"runat="server"/>
</td>
</tr>
</table>

فضاهای نام

فضاهای نام زیر را باید در پروژه وارد کنیم.

توجه داشته باشید که باید ASPSnippets.GoogleAPI DLL را درون فولدر BIN پروژه قرار داده و reference آن را اضافه نماییم.

کد C#:

using ASPSnippets.GoogleAPI;
using System.Web.Script.Serialization;

کد VB.Net:

Imports ASPSnippets.GoogleAPI
Imports System.Web.Script.Serialization

کلاس داده ها

برای نگه داری جزئیات فایل Google Driveای که Google API پس از آپلود فایل برمی گرداند، باید کلاسی مانند کلاس زیر ایجاد کنیم.

ساختار این کلاس به شکل همان رشته Json ای است که Google API برمی گرداند، بنابراین رشته Json به سادگی می تواند به اشیای متناظر خود تبدیل (Deserialize) شود.

کد C#:

public class GoogleDriveFile
{
    public string Id { get; set; }
    public string Title { get; set; }
    public string OriginalFilename { get; set; }
    public string ThumbnailLink { get; set; }
    public string IconLink { get; set; }
    public string WebContentLink { get; set; }
    public DateTime CreatedDate { get; set; }
    public DateTime ModifiedDate { get; set; }
}

کد VB.Net:

Public Class GoogleDriveFile
    Public Property Id() As String
        Get
            Return m_Id
        End Get
        Set(value As String)
            m_Id = Value
        End Set
    End Property
    Private m_Id As String
    Public Property Title() As String
        Get
            Return m_Title
        End Get
        Set(value As String)
            m_Title = Value
        End Set
    End Property
    Private m_Title As String
    Public Property OriginalFilename() As String
        Get
            Return m_OriginalFilename
        End Get
        Set(value As String)
            m_OriginalFilename = Value
        End Set
    End Property
    Private m_OriginalFilename As String
    Public Property ThumbnailLink() As String
        Get
            Return m_ThumbnailLink
        End Get
        Set(value As String)
            m_ThumbnailLink = Value
        End Set
    End Property
    Private m_ThumbnailLink As String
    Public Property IconLink() As String
        Get
            Return m_IconLink
        End Get
        Set(value As String)
            m_IconLink = Value
        End Set
    End Property
    Private m_IconLink As String
    Public Property WebContentLink() As String
        Get
            Return m_WebContentLink
        End Get
        Set(value As String)
            m_WebContentLink = Value
        End Set
    End Property
    Private m_WebContentLink As String
    Public Property CreatedDate() As DateTime
        Get
            Return m_CreatedDate
        End Get
        Set(value As DateTime)
            m_CreatedDate = Value
        End Set
    End Property
    Private m_CreatedDate As DateTime
    Public Property ModifiedDate() As DateTime
        Get
            Return m_ModifiedDate
        End Get
        Set(value As DateTime)
            m_ModifiedDate = Value
        End Set
    End Property
    Private m_ModifiedDate As DateTime
End Class

احراز هویت کاربر با استفاده اکانت Google:

با کلیک روی دکمه “آپلود”، کاربر به صفحه مجوزهای دسترسی گوگل (Google Authorization) هدایت می شود که کاربر مجوزهای موردنیاز را برای دسترسی به Google Drive را به اپلیکیشن می دهد.

در این مثال، با ارسال https://www.googleapis.com/auth/drive.fileدسترسی به Google Drive را درخواست می کنیم. کاربر می تواند این اجازه را به اپلیکیشن بدهد یا آن را نادیده بگیرد و در هر دو صورت، به آدرسی برگردانده می شود که در زمان ساخت اپلیکیشن در Google Developer Console به عنوان RedirectUri تنظیم شده است.

فایل آپلود شده و توضیحات آن در Session ذخیره می شود، تا بعد از گرفتن مجوز در Google Drive آپلود شود.

کد C#:

protected void UploadFile(object sender, EventArgs e)
{
    Session["File"] = FileUpload1.PostedFile;
    Session["Description"] = txtDescription.Text;
    GoogleConnect.Authorize("https://www.googleapis.com/auth/drive.file");
}

کد VB.Net:

Protected Sub UploadFile(sender As Object, e As EventArgs)
    Session("File") = FileUpload1.PostedFile
    Session("Description") = txtDescription.Text
    GoogleConnect.Authorize("https://www.googleapis.com/auth/drive.file")
End Sub

Google Drive API

آپلود فایل در Google Drive و نمایش جزئیات در صفحه

اولین چیزی که باید تنظیم نماییم، Client ID و Client Secret برای کلاس GoogleConnect می باشد و همچنیدن باید API را برای استفاده از Google Drive API روی Driveتنظیم کنیم.

کد زیر به دنبال کد دسترسی (access token) در Query string است و سپس این کد دسترسی را به همراه فایل و توضیحات آن از Session به تابع PostFile که در کلاس GoogleConnect وجود دارد، ارسال می کنیم.

تابع PostFile جزئیات فایل آپلودشده در Google Drive را در یک رشته Json برمی گرداند که سپس به شی کلاس GoogleDriveFile تبدیل (Deserialize) می شود.

در نهایت، جزئیات فایل آپلود شده در Google Drive نمایش داده می شود.

کد C#:

protected void Page_Load(object sender, EventArgs e)
{
    GoogleConnect.ClientId = "<Google Client ID>";
    GoogleConnect.ClientSecret = "<Google Client Secret>";
    GoogleConnect.RedirectUri = Request.Url.AbsoluteUri.Split('?')[0];
    GoogleConnect.API = EnumAPI.Drive;
    if (!string.IsNullOrEmpty(Request.QueryString["code"]))
    {
        string code = Request.QueryString["code"];
        string json = GoogleConnect.PostFile(code, (HttpPostedFile)Session["File"], Session["Description"].ToString());
        GoogleDriveFile file = (new JavaScriptSerializer()).Deserialize<GoogleDriveFile>(json);
        tblFileDetails.Visible = true;
        lblTitle.Text = file.Title;
        lblId.Text = file.Id;
        imgIcon.ImageUrl = file.IconLink;
        lblCreatedDate.Text = file.CreatedDate.ToString();
        lnkDownload.NavigateUrl = file.WebContentLink;
        if (!string.IsNullOrEmpty(file.ThumbnailLink))
        {
            rowThumbnail.Visible = true;
            imgThumbnail.ImageUrl = file.ThumbnailLink;
        }
    }
    if (Request.QueryString["error"] == "access_denied")
    {
        ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "alert('Access denied.')", true);
    }
}

کد VB.Net:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        GoogleConnect.ClientId = "<Google Client ID>";
        GoogleConnect.ClientSecret = "<Google Client Secret>";
    GoogleConnect.RedirectUri = Request.Url.AbsoluteUri.Split("?"c)(0)
    GoogleConnect.API = EnumAPI.Drive
    If Not String.IsNullOrEmpty(Request.QueryString("code")) Then
        Dim code As String = Request.QueryString("code")
        Dim json As String = GoogleConnect.PostFile(code, DirectCast(Session("File"), HttpPostedFile), Session("Description").ToString())
        Dim file As GoogleDriveFile = (New JavaScriptSerializer()).Deserialize(Of GoogleDriveFile)(json)
        tblFileDetails.Visible = True
        lblTitle.Text = file.Title
        lblId.Text = file.Id
        imgIcon.ImageUrl = file.IconLink
        lblCreatedDate.Text = file.CreatedDate.ToString()
        lnkDownload.NavigateUrl = file.WebContentLink
        If Not String.IsNullOrEmpty(file.ThumbnailLink) Then
            rowThumbnail.Visible = True
            imgThumbnail.ImageUrl = file.ThumbnailLink
        End If
    End If
    If Request.QueryString("error") = "access_denied" Then
        ClientScript.RegisterClientScriptBlock(Me.[GetType](), "alert", "alert('Access denied.')", True)
    End If
End Sub

نمایش جزئیات فایل آپلودشده

Google Drive API

توضیحات فایل آپلود شده در Google Drive:

Google Drive API

آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=16323
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
داریوش فرخی
داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .
مطالب بیشتر
برچسب ها:

نظرات

0 نظر در مورد آپلود فایل در Google Drive با استفاده از Google Drive API در ASP.Net

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هیچ دیدگاهی نوشته نشده است.