使用cfhttp在ColdFusion中获取文件之后的只读

我正在创build一个计划的任务,从第三方站点下载一个Excel文件,然后相应地更新数据库。

我可以通过一个url(例如http://www.example.com/myExcel.xls )成功下载该文件。 但是当我尝试阅读后,使用本Nadel的POIUtility.cfc,我得到各种错误。 这似乎是由于我用CFHTTP下载文件时,它被保存为只读格式。

这种行为听起来对任何人都熟悉吗?或者有人知道如何保存文件,使其不是只读的?

提前致谢。

部分代码:

 <cfhttp method="get" url="http://www.example.com/myExcel.xls" path="#expandpath('xls')#" file="stocks.xls" /> <cfset objPOI = CreateObject("component", "POIUtility").Init()/> <cfset arrSheets = objPOI.ReadExcel( FilePath = ExpandPath("xls/stocks.xls") , HasHeaderRow = true) /> 

更新6月22日:我收到的错误是以下内容:

 Object instantiation exception. An exception occurred while instantiating a Java object. The class must not be an interface or an abstract class. Error: ''. The error occurred in /Volumes/RAID/DATA/ColdFusion9/wwwroot/website/POIUtility.cfc: line 883 Called from /Volumes/RAID/DATA/ColdFusion9/wwwroot/website/autoUpdateStock.cfm: line 36 Called from /Volumes/RAID/DATA/ColdFusion9/wwwroot/website/POIUtility.cfc: line 883 Called from /Volumes/RAID/DATA/ColdFusion9/wwwroot/website/autoUpdateStock.cfm: line 36 881 : "org.apache.poi.hssf.usermodel.HSSFWorkbook" 882 : ).Init( 883 : LOCAL.ExcelFileSystem 884 : ); 885 : 

如果我直接从我的操作系统中打开下载的文件,excel中的状态栏也会显示“(只读)”。 如果我将这个文件保存为一个不同的文件名,然后在POI代码中使用这个新的文件名,它就可以毫无问题地工作。

我有一个类似的错误,前一个问题是不受支持的excel文件,导致POI给出了相同的错误。 但是这个excel文件不包含像graph等特殊的东西,只是没有datafilters的普通数据。

我想也许源文件保存在一个不受支持的Excel格式为POI实用程序,但是当我查看该文件的信息窗口它说:“types:Microsoft Excel 97-2004工作簿”这是与其他文件相同我尝试过(那个工作)。

错误可能引用“只读”,但我严重怀疑这是否是问题。 毕竟CF实际上文件写入磁盘 – 所以它将能够读取相同的文件。

问题更可能是语法。 你试过ExpandPath('./xls')吗? 我也在你的cfhttp调用中看到一个分号 – 我认为这是一个错字。

在操作系统发布文件句柄之前,也可以用POI命令文件。 尝试添加一些睡眠时间 – 10秒左右 – 以消除这种可能性。

Interesting Posts