我使用的是一个共享主机服务器,它限制了CFFILE“上传”的文件大小(比如说100MB)--我的代码适用于99%的上传,但是对于大于100MB的文件,他们建议我使用Action=。
为了让CFFTP正常工作,我需要本地路径名(即"c:\myFiles\fileToUpload.mpg"),但是因为我在转储表单字段时使用的是CFFORM表单项“ENCYTYPE=/ .tmp -data”,所以它在服务器上被列为.tmp。如果我删除了ENCTYPE指定,那么我就得到了本地路径名,我就可以开始工作了。
我的目标是,如果文件大小超过100MB,可以无缝地切换到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>任何帮助都是非常感谢的!
发布于 2013-02-01 21:48:47
根据ColdFusion文档,CFFTP标签用于"...在ColdFusion服务器和FTP服务器之间移动文件。“-该标签不允许您从客户端硬盘读取文件并上传到服务器。从客户端传输文件的唯一方法是使用CFFILE。
在我的情况下,我将不得不让客户知道,现在上传的文件大小有限制-根据Dan的建议,我将建议使用Firezilla上传所有超过100MB的文件。
感谢所有人的回复。
发布于 2013-02-01 11:10:50
我认为你不走运有几个原因。首先,在没有用户明确同意的情况下获取本地文件路径是不可能的。您可以编写一些活动的x控件来执行此操作,但浏览器会询问用户是否允许这样做。认为这是不太可能的。
接下来,cfftp将只在启用ftp的机器上工作。大多数个人电脑都不是这样。那些可能需要你克服的安全措施。
我认为如果文件太大,最好的办法就是向用户显示一条消息。此消息将包含有关ftp客户端(如Filezilla )的信息,以及关于如何将文件ftp到服务器的说明,当然,假设服务器的所有者允许普通公众通过ftp文件进入。
https://stackoverflow.com/questions/14638915
复制相似问题