首页 > 解决方案 > CFPDF action="protect" ColdFusion 无法删除文件

问题描述

我执行以下操作:

<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 等待文件可用?

标签: coldfusionfile-permissionscfpdf

解决方案


仅供参考,我找到了 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

来自查理·阿雷哈特的第一条评论:

“您真的不需要使用这些 CFPDF* 标签创建文件

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

...可能想要有意创建文件,但至少如果您只在最后一步进行,它可能会解决...问题。

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

以及 MarkMetcalf 的解决方案。


推荐阅读