CFPDF action =“ protect” ColdFusion无法删除文件

时间:2019-08-05 15:20:01

标签: coldfusion file-permissions cfpdf

我执行以下操作:

<cffunction name="GenerateTemporaryDocument" access="remote" returntype="string">
        <cfargument name="Source" type="string" required="yes" >
        <cfargument name="Fields" type="array" required="yes" >

    <cfset Source  = "\#Source#" >
    <cfset pdfName = ".\Generated\#CreateUUID()#.pdf" >

    <cfpdfform action="populate"    
            source="#Source#"   
            destination="#pdfName#" 
            overwrite="yes">

    <cfpdfform action="populate"    
           source="#Source#"    
           destination="#pdfName#" 
           overwrite="yes">
           <!--- 
           some form fields that get filled 
           --->
    </cfpdfform>

    <cfpdf action="write" 
        source="#pdfName#" 
        destination="#pdfName#" 
        flatten="yes" 
        overwrite="true">

    <cfpdf action="protect" 
         source="#pdfName#" 
         newOwnerPassword ='xxxxx'
         permissions = 'AllowPrinting'>


        <cfreturn pdfName>

</cffunction>

我会说99/100次,效果很好。但是每隔一段时间,我会在保护命令的行上看到此错误:

  

ColdFusion无法删除文件   C:\ inetpub \ wwwroot \ Generated \ D6DBE4BD-AC16-2D87-C6CC1FDB990820C2.pdf。

是否有明显的理由会这样做?如果没有,有没有办法我可以进行while循环并让cf等待文件可用?

1 个答案:

答案 0 :(得分:0)

仅供参考,我在

找到了 Charlie Arehart 和其他人的建议

https://community.adobe.com/t5/coldfusion/i-was-not-allowed-to-deleted-them-pdf-s-until-i-had-restarted-cf/td-p/2435410

来自 Charlie Arehart 的第一条评论:

<块引用>

“您实际上并不需要使用这些 CFPDF* 标签创建文件

<块引用>

...您可以使用 NAME 属性 (而不是目的地)指示一个变量来保存输出 一个较早的步骤,然后在稍后的 SOURCE 中使用该变量 步骤。

<块引用>

... 可能想要故意创建文件,但也许 至少如果你只在最后一步做,它可能会解决......问题。

<块引用>

... /Charlie(服务器疑难解答,carehart.org)”

以及 MarkMetcalf 沿着这些方向提出的解决方案。