2015-02-12 42 views
4

我想从使用cfhttp的自动下载url中获取文件。 我使用下面的代码:从coldfusion中的自动下载url中获取文件

<cfhttp method="get" url="http://www.example.com/getfile" path="E:/" file="abc.csv"> 

在这种情况下,我指定的文件类型为CSV,所以我能够得到的文件,但文件类型可以改变。 我试图CFHTTP.MIMETYPE获取文件类型和使用这样的:

<cfhttp method="get" url="http://www.example.com/getfile"> 
<cffile action="write" file="E:/abc.#listLast(cfhttp.MIMETYPE,'/')#" output="#cfhttp.FileContent#"> 

,这是工作CSV和XML文件。但我希望它也能用于Excel文件。

请帮忙。 在此先感谢。

+0

您是否尝试过在cfhttp标签中设置'getAsBinary =“Auto”'? – 2015-02-12 07:35:32

+0

我可以把它作为二进制文件,但仍然如何获得文件扩展名? – Beginner 2015-02-12 07:39:52

+0

@cfqueryparam有没有什么办法可以得到文件扩展名? – Beginner 2015-02-12 17:44:24

回答

4
<cfhttp method="get" url="http://www.example.com/getfile"> 
<cfset fileName = listlast(cfhttp["responseHeader"]["content-disposition"],";=")> 
<cffile action="write" file="E:/abc.#fileName#" output="#cfhttp.FileContent#"> 
+1

为什么要使用两个名单?您可以用一个listlast覆盖它并将两个分隔符指定在一起。例如,这是listlast与java的拆分不同的地方。另外,为什么使用structfind? 'cfhttp [“responseHeader”] [“Content-Disposition”]'将用于相同的目的,因为如果该键不存在就像直接调用它一样,StructFind()会抛出异常。尽管这些是语义的,但答案很好,但'listlast(cfhttp [“responseHeader”] [“content-disposition”],“; =”)'将实现相同的目标。 – 2015-02-13 07:38:33

+0

@cfqueryparam:谢谢你的建议。我已经更新了我的答案。 – 2015-02-13 09:26:50

+0

@deepak感谢它的工作。 :) – Beginner 2015-02-13 11:14:12