我在压缩文档时难以重命名文件。在下面,我试图从文档中获取字符串,替换并保存为具有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
答案 0 :(得分:7)
您无法使用cfzip
重命名zip文件。
在cfzipparam
中提供一个入口路径只会在zip文件中创建一个子目录
在您的情况下,名为&#39; document.doc&#39;的子目录将在zip文件中创建。
在生成doc文件时,zip文件中的文件名与cffile
中提供的文件名相同
Please read this
因此您需要先根据需要重命名该文件。然后你可以压缩它以获得理想的结果。
答案 1 :(得分:1)
实际上,entrypath
属性允许您重命名将包含在zip中的文件。
不幸的是,ColdFusion 11中的bug #3968971似乎停止了工作。