3

[メモ] タブから特定の結果が得られました。

iframe 内に表示されるリンクは、ファイルの名前です。

base64 のような形式で注釈から DocumentBody を取得しています。

どうすればダウンロードできますか?

base64 文字列をファイルとしてクライアントに保存します

ありがとう、ファビオ

4

2 に答える 2

1

このような URL に対して JQuery リクエストを実行します。

Xrm.Page.context.getServerUrl() + "XRMServices/2011/OrganizationData.svc/ActivityMimeAttachmentSet(guid'abc...')?$select=Body"

select を指定することで、必要なものだけを要求します。

結果を変数に代入し、先頭に追加します

data:application/pdf;base64,



そこから、HTML オブジェクトとしてインラインで表示したり、新しいウィンドウとして開いたりすることができます。

window.location or window.open or document.location.href
于 2012-12-14T04:55:07.463 に答える
0

次のように抽出されたbase64ドキュメントボディ文字列がすでにありました。

function getSla() {
    // Define SOAP message
    var objectId;
    if (typeof crmForm === "undefined") {
        objectId = parent.crmForm.ObjectId;
    }
    else {
        objectId = crmForm.ObjectId;
    }

    var xml =
        [
        "<?xml version='1.0' encoding='utf-8'?>",
        "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" ",
        "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ",
        "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">",
        GenerateAuthenticationHeader(),
        "<soap:Body>",
        "<RetrieveMultiple xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>",
        "<query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' ",
        "xsi:type='q1:QueryExpression'>",
        "<q1:EntityName>annotation</q1:EntityName>",
        "<q1:ColumnSet xsi:type='q1:AllColumns' />",
        "<q1:Distinct>false</q1:Distinct><q1:Criteria><q1:FilterOperator>And</q1:FilterOperator>",
        "<q1:Conditions><q1:Condition><q1:AttributeName>objectid</q1:AttributeName><q1:Operator>Equal</q1:Operator>",
        "<q1:Values><q1:Value xsi:type=\"xsd:string\">",
        objectId,
        "</q1:Value></q1:Values></q1:Condition></q1:Conditions></q1:Criteria>",
        "</query>",
        "</RetrieveMultiple>",
        "</soap:Body>",
        "</soap:Envelope>"
        ].join("");
    var resultXml = executeSoapRequest("RetrieveMultiple", xml);

    var result = filter(resultXml.getElementsByTagName("q1:filename"), function (element) {
        return /master.*sla/i.test(element.text);
    });

    if (result.length == 0) {
        return null;
    }
    else {
        return result[0].parentNode;
    }
}

function getSlaDocumentBody(sla) {
    return sla.getElementsByTagName("q1:documentbody")[0].text;
}

window.open("data:application/pdf;base64," + getSlaDocumentBody(sla));

アドレスバーに文字列 data:application/pdf.......... を含む新しいウィンドウを開きましたが、何もしませんでした。私は確かにその解決策を好むでしょう。

ここで srasmussen ソリューションを使用することになりました: http://social.microsoft.com/Forums/en/crm/thread/05134277-dd76-4fbb-8f6e-89b1a2a45af1

var URL = serverUrl + "/userdefined/edit.aspx?etc=5&id=" + slaId;

$.get(URL, function (data) {
    var WRPCTokenElement = $(data).find("[WRPCTokenUrl]");
    if (WRPCTokenElement) {
        var WRPCTokenUrl = WRPCTokenElement.attr("WRPCTokenUrl");
        if (WRPCTokenUrl) {
            URL = "/Activities/Attachment/download.aspx?AttachmentType=5&AttachmentId=" + slaId + "&IsNotesTabAttachment=undefined" + WRPCTokenUrl;
            window.open(URL);
        }
    }

    return false;
});
于 2012-12-14T10:08:40.990 に答える