7

我正在尝试使用 cfhttp 从自动下载 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 文件。

请帮忙。提前致谢。

4

2 回答 2

5
<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#">
于 2015-02-13T07:14:25.300 回答
0

正如“Regular Jo”所提到的,您需要将 getAsBinary="Auto" 添加到 cfhttp 以使其正常工作。感谢 Deepak Kumar Padhy 的初始回答,为我指明了正确的方向。

<cfhttp method="get" url="http://www.example.com/getfile" getAsBinary="Auto" result="cfhttp">
        
<cfdump var="#cfhttp#">
        
<!--- Returns the file name with double quotes, ex. '"Users.zip"' --->
<cfset fileNameWithQuotes = listlast(cfhttp["responseHeader"]["content-disposition"],";=")>
        
<!--- Remove the '"' in the file name so it is Users.zip --->
<cfset fileName = REPLACENOCASE(fileNameWithQuotes,'"','', 'ALL')>
       
<!--- Write the zip to the server location ---> 
<cffile action="write" file="E:/abc/#fileName#" output="#cfhttp.FileContent#">
        
<!--- if zip file, unzip the file to get the csv --->
<cfzip file="E:/abc/#fileName#" action="unzip" filter="*.csv" destination="E:/abc/" />
于 2021-05-30T06:48:00.260 回答