我在案例的笔记中保存了一些文档模板。 我需要获取文档的下载URL,我将在另一个需要的插件中使用它。
现在的问题是, 我上传了一份文件到笔记部分, 我通过下载并检查下载URL获得了它的下载URL。
当我将此作为输入提供给插件时,它仅适用于上传它的用户。
其他用户无法访问,
现在我可以在哪里上传CRM中的文档,以便所有用户都可以查看和下载文档?
答案 0 :(得分:2)
您需要获得有效的WRPCTokenUrl。您可以存储Note的guid,然后在需要时获取有效的URL,而不是存储用于获取文档的直接URL(不包含其他用户的有效WRPCTokenUrl)。
Note guid可用于提取有效的下载URL,如Extending Microsoft Dynamics CRM 2011: Build Attachment Download URL Links with JQuery中所述。该页面中的相关代码段可以在此处看到:
function getDocumentUrl(annotId) {
var URL = urlbase + '/userdefined/edit.aspx?etc=5&id={' + annotId + '}';
var docUrl;
// get the security token to build the href link. if the token cannot be found,
// a null value is returned
$.get(URL, function (data) {
// get the form data via the 'URL'
data = $.parseHTML(data);
// locate the security element
var securityTokenElement = $(data).find("[WRPCTokenUrl]");
if (securityTokenElement) { // if the security element was found on the Note form
// locate the security token within the security element
var securityTokenUrl = SecurityTokenElement.attr("WRPCTokenUrl");
// if the security token is located, build the url
if (securityTokenUrl) {
docUrl = urlbase + "/Activities/Attachment/download.aspx?AttachmentType=5&AttachmentId={" +
annotId + "}&IsNotesTabAttachment=undefined" + SecurityTokenUrl;
}
}
});
return docUrl;
}
答案 1 :(得分:2)
如果您正在尝试使用简单的Web服务调用,则可以更轻松地访问文档数据。我不会尝试通过URL访问文档数据,我认为这不是真正的意思。
查看Sample: Upload, retrieve, and download an attachment。
// Retrieve the annotation record.
Annotation retrievedAnnotation = (Annotation)_serviceProxy.Retrieve("annotation", _annotationId, cols);
_fileName = retrievedAnnotation.FileName;
// Download the attachment in the current execution folder.
using (FileStream fileStream = new FileStream(retrievedAnnotation.FileName, FileMode.OpenOrCreate))
{
byte[] fileContent = Convert.FromBase64String(retrievedAnnotation.DocumentBody);
fileStream.Write(fileContent, 0, fileContent.Length);
}