次の方法で共有


共有アクセス署名を使用した Dataverse ファイルへの制限付きアクセス権の付与

1 時間、誰でも GetFileSasUrl メッセージを使って生成された URL を使って、Dataverse に保存されているファイルをダウンロードすることができます。 この URL は、URL が生成されてから 1 時間以内であれば誰でも匿名でアクセスできるようになります。 url を生成するために GetFileSasUrl を呼び出す人は、そのファイルを含むレコードへのアクセス権を持ってる必要があります。

ファイルは、添付ファイル、メモ、ファイル列、または画像列になります。 いくつかの制限が適用されます

注意

管理者は、SAS IP 制限機能 (プレビュー) を使用してテナントを構成できるため、クライアント アプリケーションの IP アドレスに基づいてダウンロードを制限できます。 これを有効にすると、ユーザーは、コンピューターの IP アドレスがテナントに設定された制限を満たしておらず、ファイルをダウンロードしようとすると、401 エラーを受け取ります。

Parameters

GetFileSasUrl メッセージには以下のパラメーターがあります:

件名 タイプ プロパティ
Target EntityReference/
crmbaseentity
ファイルまたは画像データを含むテーブル行を識別します。
FileAttributeName 文字列 データを含むファイルまたは画像列の名前を識別します。 メモおよび属性レコードの場合、この値は空の文字列である必要があります。
DataSource 文字列 レコードがretainedのフラグを付けられたか、binなテーブルで削除された場合は または の値です。

回答

GetFileSasUrl メッセージによって返されるデータには、次のデータを含む Result プロパティがあります:

件名 タイプ プロパティ
FileName 文字列 ファイル名です。
FileSizeInBytes int64 ファイル サイズ (バイト数)。
MimeType 文字列 ファイルの MIME タイプ。
SasUrl 文字列 ファイルにアクセスするために使用できる共有アクセス署名 (SAS) URL です。

使用例

これらのサンプル関数は、SDK for .NET と Web API の両方で GetFileSasUrl メッセージを使用する方法を示しています。

この静的 GetFileSasUrl メソッドは、GetaFileSasUrlRequest クラスと GetFileSasUrlResponse クラスを使用します。 GetFileSasUrlResponse.Result プロパティ は、匿名でファイルをダウンロードするために必要な情報を含む FileSasUrlResponse クラス インスタンスを返します。

/// <summary>
/// Generates a link for anonymous access to a file.
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
/// <param name="target">The record that has the file data.</param>
/// <param name="fileAttributeName">Optional name of the file or image column</param>
/// <param name="dataSource">Optional source of the data when retained or deleted.</param>
/// <returns>Information to download a file</returns>
static FileSasUrlResponse GetFileSasUrl(IOrganizationService service, 
    EntityReference target, 
    string? fileAttributeName = null, 
    string? dataSource = null) { 

    var request = new GetFileSasUrlRequest() { 
        Target = target
    };

    if (target.LogicalName == "annotation" ||
        target.LogicalName == "activitymimeattachment"){

        //FileAttributeName is required
        request.FileAttributeName = string.Empty;

    }
    else
    {

        if (!string.IsNullOrEmpty(fileAttributeName))
        {
            request.FileAttributeName = fileAttributeName;
        }
        else
        {

            string message = "fileAttributeName is required ";
            message += "when the target isn't annotation ";
            message += "or activitymimeattachment";

            throw new Exception(message);
        }
    }
    
    if (!string.IsNullOrEmpty(dataSource)) {
        //dataSource should be 'retained' or 'bin'
        request.DataSource = dataSource;
    }

   var response = (GetFileSasUrlResponse)service.Execute(request);

    return response.Result;        
}

.NET 用 SDK を使用する

制限

以下の制限があります:

参照

ファイルおよび画像の概要
ファイル列のデータを使用する
ファイル列のデータを使用する
添付ファイルとメモ レコードでファイル データを使用する