如何使用 cfzip 重命名文件?

How do I rename a file using cfzip?

我在压缩文档时难以重命名文件。在下方,我正在尝试从文档中获取字符串,替换并保存为具有 UUID 文件名的文档。我希望将文件名更改为压缩文件时可读的名称。我该怎么做?

<cfset rtf = FileRead(filepathofdocument) />
<cfset rtf = Replace(rtf,"%newProdYN%",session.input.inputtext) />
<cfset rtf = Replace(rtf,"%ration%",session.input.inputtext2) />
<cfset cfdest = "#GetDirectoryFromPath(session.input.storage.destination)#/#CreateUUID()#.doc" />
<cffile action = "write" 
    file = "#cfdest#"
    output = "#rtf#">
<cfzip action="zip" file="#getTempDirectory()#/#CreateUUID()#.zip">
<cfzipparam source="#cfdest#" entrypath="document.doc" />
<!-- More file sources to zip... -->
</cfzip>

cfzipparam 标签的入口路径好像不行...

已编辑:我实际上已经按照 Ben Nadel 博客的教程进行操作。 http://www.bennadel.com/blog/795-learning-coldfusion-8-cfzip-part-ii-zipping-files-and-directories-with-cfzipparam.htm

您不能使用 cfzip.
重命名 zip 中的文件 在 cfzipparam 中提供入口路径只会在 zip 文件中创建一个子目录。
在您的情况下,将在 zip 文件中创建名为 'document.doc' 的子目录。
zip 文件的名称将与您在生成 doc 文件时在 cffile 中提供的名称相同。
Please read this

因此您需要先根据需要重命名文件。然后你可以压缩它以获得所需的结果。

实际上,entrypath 属性允许您重命名将包含在 zip 中的文件。

不幸的是,ColdFusion 11 中似乎有一个 bug #3968971 已停止工作。