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

Coldfusion 允许CFFILE和CFFTP在同一个CFFORM中工作,coldfusion,forms,Coldfusion,Forms,我使用的共享托管服务器限制了CFFILE Action=“Upload”的文件大小(比如100 MB)——我的代码适用于99%的上传,但对于大于100 MB的文件,他们建议我使用FTP 为了让CFFTP工作,我需要本地路径名(即“c:\myFiles\fileToUpload.mpg”),但因为我使用的是CFFORM ENCYTYPE=“multipart/form data”,如果我转储formfield,它在服务器上被列为.tmp。如果我消除了ENCTYPE指定,那么我就得到了本地路径名,我

我使用的共享托管服务器限制了CFFILE Action=“Upload”的文件大小(比如100 MB)——我的代码适用于99%的上传,但对于大于100 MB的文件,他们建议我使用FTP

为了让CFFTP工作,我需要本地路径名(即“c:\myFiles\fileToUpload.mpg”),但因为我使用的是CFFORM ENCYTYPE=“multipart/form data”,如果我转储formfield,它在服务器上被列为.tmp。如果我消除了ENCTYPE指定,那么我就得到了本地路径名,我就可以开始了

我的目标是在文件大小超过100MB时切换到CFFTP。当ENCTYPE设置为“多部分/表单数据”时,是否可以提取本地路径名

或者是否有其他方法允许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>


非常感谢您的帮助

我认为你运气不好有两个原因。首先,在没有用户明确同意的情况下获取本地文件路径是不可能的。您可以编写一些活动的x控件来执行此操作,但浏览器会询问用户是否允许。认为不太可能。

接下来,cfftp将仅与启用ftp的计算机一起工作。大多数个人电脑并非如此。这些问题可能会有安全措施供您克服


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

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

在我的情况下,我必须让客户知道,现在上传文件的大小有限制——根据Dan的建议,我建议使用Firezilla上传所有超过100MB的文件


感谢大家的回复。

表单不进行FTP上传。您需要让用户连接到FTP客户端(例如),并提出一个将其链接到应用程序的系统。谢谢,Peter,这正是我所担心的。您必须使用客户端FTP客户端,如Java、Flash、ActiveX控件等,才能完成您尝试执行的操作。谢谢,Ben,我想我应该更仔细地阅读CF文档:使用此标记可以在ColdFusion服务器和FTP服务器之间移动文件。“@JasonD-Small放在一边,
action=“upload”
有点用词不当。在您点击操作页面之前,该文件已经上载到服务器上了。
cffile
调用只需移动并重命名该文件(实际的上载早就完成了)。感谢您的快速响应!用户正在选择要上载的本地文件,他所做的只是单击“浏览”“由标记自动生成的按钮。如果我没有包含enctype,那么我将拥有本地路径,没有问题。我的备用位置是让用户知道他将无法上传超过一定大小的文件,但我正试图避免这种情况,因为过去没有限制(看起来我的托管提供商在过去一年内开始强制执行CFFILE上传限制)。我只是想澄清一下,我认为100 MB的限制是通过管理员设置的ColdFusion限制(尽管您的web服务器也会/应该有限制)。此外,我相信ColdFusion已经以这种方式设置了一段时间(至少在以前的一些版本中)。我知道Adobe在ColdFusion 8中对大文件处理做了一些更改。无论如何,我也想分享一篇好文章,他也提到了这些设置。