首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColdFusion压缩整个文件夹

ColdFusion压缩整个文件夹
EN

Stack Overflow用户
提问于 2019-10-11 03:55:30
回答 1查看 162关注 0票数 2

我把一些文件从服务器上的一个目录移到了另一个目录。我想在移动文件后压缩目标文件夹。

代码语言:javascript
复制
<cfoutput>
    <cfset destination = expandPath("./TenantFiles/tempEmail/11/") />
    <cfif not directoryExists(destination)>
        <cfdirectory action="create" directory="#destination#">
    <cfelse>
        <cfdirectory action="delete" directory="#destination#" recurse="true">
        <cfdirectory action="create" directory="#destination#">
    </cfif>
    <cfloop query="myQuery">
        <cfset sourcefile = expandPath("./TenantFiles/11/#myQuery.TenantID#/#myQuery.DocumentName#") />
        <cfif FileExists(sourcefile)>
            <cfscript>
                FileMove(#sourcefile#, #destination#);
            </cfscript>
        </cfif>
    </cfloop>
    <cfzip action="zip" file="#destination#\ZipFile.zip" source="#destination#" filter="*.pdf" /> 
</cfoutput>

它返回错误:

代码语言:javascript
复制
 Can not create a zip file with no entries.
Make sure that there is at least one entry in the zip file. 

然而,#destination#文件夹中有很多pdf文件。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-10-11 22:21:52

我没有在可能的问题上来回奔波,而是创建了一个函数,可以用来测试您的环境中是否发生了其他事情。我消除了文件的移动和其他可能的问题来源。

尝试设置一个与此示例匹配的测试文件夹,并在使用您的实际查询和文件之前查看是否有效。我将其设置为不在zip中存储文件的路径,因为这是您的文件移动和添加的结果,但它可能不是您最终想要的。

代码语言:javascript
复制
<cfset myQuery = queryNew("") />
<cfset TenantIDs = [1,2,3,4] />
<cfset DocumentNames = ['one.pdf','two.pdf','three.txt','four.doc'] />
<cfset queryAddColumn(myQuery, 'TenantID', "integer", TenantIDs) />
<cfset queryAddColumn(myQuery, 'DocumentName', "varchar", DocumentNames) />

<cfset zipPdfFiles(expandPath('./testfiles'), myQuery, "TenantID", "DocumentName", expandPath('./testfiles/zipFile.zip'), "pdf") />

<cffunction name="zipPdfFiles" output="true">
    <cfargument name="baseFilePath" required="true" />
    <cfargument name="fileQuery" required="true" />
    <cfargument name="folderColumn" required="true" />
    <cfargument name="fileNameColumn" required="true" />
    <cfargument name="zipFilePath" required="true" />
    <cfargument name="allowExtensions" default="" hint="comma separated list of extensions or blank for all" />

    <cfzip action="zip" file="#arguments.zipFilePath#" storePath="false">
        <cfloop query="arguments.fileQuery">
            <cfif not len(arguments.allowExtensions) or listFindNoCase(arguments.allowExtensions, listLast(myQuery.DocumentName, "."))>
                <cfzipparam source="#arguments.baseFilePath#/#arguments.fileQuery[arguments.folderColumn][currentRow]#/#arguments.fileQuery[arguments.fileNameColumn][currentRow]#" />
            </cfif>
        </cfloop>
    </cfzip>
</cffunction>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58330246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档