【问题标题】:Docusign REST API: Downloading document to stringDocusign REST API:将文档下载到字符串
【发布时间】:2018-08-24 21:02:31
【问题描述】:

我正在使用 docusign API 和 PHP 构建一个应用程序。除了我不知道如何下载文档外,我的大部分工作都完成了。我一直在这个网站和 Docusign 网站上搜索。 Docusign 有一个example here,它显示了如何在 PHP 中获取文档列表,但下载没有 PHP 示例。在 Docusign REST API 文档中,他们解释了 method here。但这表示响应是“PDF 文件”。

在下面的示例代码中,我尝试将内容放入文件中,但它会创建并清空文件。如果我 print_r($data),我得到这个:

      SplFileObject Object
(
    [pathName:SplFileInfo:private] => /tmp/419ULk
    [fileName:SplFileInfo:private] => 419ULk
    [openMode:SplFileObject:private] => w
    [delimiter:SplFileObject:private] => ,
    [enclosure:SplFileObject:private] => "
)

它确实在 /tmp 中创建了文件,但我想将文件保存在一个字符串中,以便发送或保存到 DB。

这是我的控制器功能:

public function get_document($envelopeId, $cert = FALSE)
{
    $save_dir = BASEPATH."../documents/";
    if ($envelopeId) {
        $this->load->model('docusign_model');
        $data = $this->docusign_model->get_document($envelopeId, $cert);
    }
    file_put_contents($save_dir.$envelopeId.".pdf", $data);
    //print_r($data);
    die("116");
}

这在docusign_model中:

public function get_document($envelopeId, $cert)
    {
        $docuSignAuth = $this->auth();
        if ($docuSignAuth) {
            $envelopeApi = new EnvelopesApi($docuSignAuth->apiClient);
            $options = new GetDocumentOptions();
            if($cert) {
                $options->setCertificate(TRUE);
            } else {
                $options->setCertificate(FALSE);
            }
            return $envelopeApi->getDocument($docuSignAuth->accountId, 1, $envelopeId, $options);
        }
        return false;
    }

如何获取此文档并将其保存在字符串中?

非常感谢任何和所有帮助!

【问题讨论】:

  • 缺少流的file_get_contents,请参阅下面的答案

标签: docusignapi


【解决方案1】:

内容以文件形式返回,您必须读取临时文件并将其保存到所需文件中

使用file_get_contentsfile_put_contents 快​​速sn-p

$docStream = $envelopeApi->getDocument($accountId, 1, $envelopeId);
file_put_contents("my_document.pdf", file_get_contents($docStream->getPathname()));

更多信息 DocuSign REST API :: EnvelopeDocuments: get将单个文档作为 PDF 文件获取

【讨论】:

  • 谢谢! “获取单个文档”的链接仅引用了调用,而不是下载文档后如何获取文档。为了安全起见,这有点不太理想,因为它将文档写入 /tmp 目录。我将构建它以便它立即删除它,但如果它只是在我可以加载到字符串中的流中会很好。
  • 不客气。您可以在 SDK git repo 中提出问题来支持它。 github.com/docusign/docusign-php-client/issues
  • 嘿@Andrew 我使用与您相同的代码,但是当我签出文件时,它是空的。知道发生这种情况的原因吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多