0

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

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

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

或者是否有其他方法可以让 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>

任何帮助是极大的赞赏!

4

2 回答 2

1

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

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

感谢大家的回复。

于 2013-02-01T13:48:46.843 回答
0

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

接下来,cfftp 将仅适用于启用了 ftp 的机器。大多数个人电脑不是。那些可能有安全措施供您克服。

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

于 2013-02-01T03:10:50.170 回答