允许CFFILE和CFFTP在同一个CFFORM中工作

时间:2013-02-01 02:46:26

标签: coldfusion html-form

我正在使用共享托管服务器限制文件大小(假设100 MB)用于CFFILE Action =“Upload” - 我的代码适用于所有上传的99%,但是对于大于100 MB的文件,他们建议我使用FTP。

为了让CFFTP工作,我需要本地路径名(即“c:\ myFiles \ fileToUpload.mpg”),但因为我使用CFFORM ENCYTYPE =“multipart / form-data”如果我转储了formfield,它在服务器上列为.tmp。如果我取消了ENCTYPE名称,那么我会得到本地路径名,我很高兴。

如果文件大小无缝超过100 MB,我的目标是切换到CFFTP。当ENCTYPE设置为“multipart / form-data”时,是否可以提取本地路径名?

OR是否有其他方法允许CFFTP和CFFILE以这种方式工作?

以下是我希望如何看待事物的抽象概念:

<!--- perform actions --->
<cfif isdefined("FORM.fileToUpload")>
    <cfif fileSizeInMB(FORM.fileToUpload) < 100>
        <cffile action="upload" blah blah>
    <cfelse>
        <cfftp action="putfile" blah blah>
    </cfif>
</cfif>

<!--- show page --->
<cfform action="#CGI.SCRIPT_NAME#" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" />
    <input type="submit" />
</cfform>

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

根据ColdFusion文档,CFFTP标记用于“......在ColdFusion服务器和FTP服务器之间移动文件”。 - 此标记不允许您从客户端的硬盘驱动器读取以上载到服务器。从客户端传输文件的唯一方法是使用CFFILE。

在我的情况下,我将不得不让客户知道现在对要上传的文件大小有限制 - 根据Dan的建议,我建议使用Firezilla上传超过100 MB的所有文件。

感谢您的回复。

答案 1 :(得分:0)

我认为你运气不好有几个原因。首先,在未经用户明确同意的情况下获取本地文件路径不会发生。您可以编写有效的x控件来执行此操作,但浏览器会询问用户是否要允许它。考虑那不太可能。

接下来,cfftp仅适用于启用了ftp的计算机。大多数个人电脑都没有。那些可能有安全措施供你克服。

我认为如果文件太大,你可以做的最好的事情就是向用户显示一条消息。此消息将包含有关ftp客户端(如Filezilla)的信息,以及有关如何将文件ftp到服务器的说明,当然假设服务器的所有者将允许一般公众使用ftp文件。