• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 321
  • Last Modified:

CF -File import check

I have the following procedure where if the import file exists then the import procedure runs and the file is moved to an archive folder and then the file is deleted since another import would mess up the data.  Then a email is generated informing that it has run. There is just one import per day.  We have found out that sometimes another file is sent in error.  What I am trying to do is check the archive folder for testfile.csv and if the file date is equal to Now() then do not run the procedure since that means that it is today's file import and it has already run and also to send a email alerting that another file is trying to import.  

Any help is appreciated.
<cfif FileExists("C:\Inetpub\wwwroot\testfile.csv")>

		
		  
	   <cffile action="read" file="C:\Inetpub\wwwroot\testfile.csv" variable="csvfile"> 
		<cfloop index="record" list="#csvfile#" delimiters="#chr(10)##chr(13)#">

Import procedure


<cffile action="copy" source="C:\Inetpub\wwwroot\testfile.csv" destination="C:\Inetpub\wwwroot\dataarchive\testfile.csv">
		<cffile action = "delete" file = "C:\Inetpub\wwwroot\testfile.csv"> 

<cfmail to="DBA@company.com"
					from="webmaster@company.com"
					subject="file complete successful"
					type="text">
				file complete successful
	</cfmail>

Open in new window

0
JohnMac328
Asked:
JohnMac328
  • 8
  • 5
  • 2
1 Solution
 
_agx_Commented:
if the file date is equal to Now()

If by you mean the file exists and has today's date, try something like this.  Or you could modify it to check the last 24 hrs instead.

<cfset isNewFile = true>
<cfset filePath = "C:\Inetpub\wwwroot\testfile.csv">
<cfif FileExists(filePath) >
    <!--- if it was uploaded today --->
    <cfif dateCompare(now(), GetFileInfo(filePath).FileLastModified, "d") eq 0>
         <cfset isNewFile = false >
     </cfif>
</cfif>

<cfif isNewFile >
     .... do processing ...
</cfif>
0
 
JohnMac328Author Commented:
At this point don't I need to check if it is true or false before processing?

<cfif isNewFile >
     .... do processing ...
</cfif>
0
 
gdemariaCommented:
<cfdirectory
DIRECTORY="C:\Inetpub\wwwroot\"
NAME="mydirectory"
FILTER="testfile.csv">

<CFOUTPUT query="mydirectory">#DateLastModified#</CFOUTPUT>
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
gdemariaCommented:
oops, posts crossed
0
 
_agx_Commented:
At this point don't I need to check if it is true or false before processing?

That's what it does. It's shorthand for saying

<cfif isNewFile eq true>
    it's okay to do processing
</cfif>
0
 
JohnMac328Author Commented:
It has a problem with this

Element FILELASTMODIFIED is undefined in a CFML structure referenced as part of an expression.  
 
 
The error occurred in C:\Inetpub\wwwroot\: line 25
 
23 :
24 : <cfif FileExists("C:\Inetpub\wwwroot\")>
25 :     <cfif dateCompare(now(), GetFileInfo(filePath).FileLastModified, "d") eq 0>

 
0
 
_agx_Commented:
<cfif FileExists("C:\Inetpub\wwwroot\")>

That's not a file, it's a directory.  Both functions require the CSV file path

<cfif FileExists("C:\myFileName.csv")>
   <cfif dateCompare(now(), GetFileInfo(C:\myFileName.csv).FileLastModified, "d") eq 0>
....
0
 
JohnMac328Author Commented:
I removed the actual file names for security reasons, it is a valid path I am working with.
0
 
JohnMac328Author Commented:
If you can delete the post I can post the actual code I have
0
 
_agx_Commented:
No, only moderators can do that.  But best not to post it at all.  Btw: you could always replace the path with "c:\path\to\dummyFileName.csv".

Anyway, are you running CF8+?  If you're on MX7 you'll have to use cfdirectory.  Otherwise, maybe CF8 doesn't like the direct variable access.  Try this instead


<cfset isNewFile = true>
<cfset filePath = "C:\Inetpub\wwwroot\testfile.csv">
<cfif FileExists(filePath) >
    <!--- if it was uploaded today --->
    <cfset csvInfo = GetFileInfo(filePath )>
    DEBUGGING: <cfdump var="#csvInfo#">
    <cfif dateCompare(now(), csvInfo.FileLastModified, "d") eq 0>
         <cfset isNewFile = false >
     </cfif>
</cfif>

.... rest of code
0
 
JohnMac328Author Commented:
The dump showed all the file information correctly and then gave this error

      Element FILELASTMODIFIED is undefined in CSVINFO.

<cfif dateCompare(now(), csvInfo.FileLastModified, "d") eq 0>  
0
 
JohnMac328Author Commented:
Using CF8
0
 
JohnMac328Author Commented:
Here is shows last modified

struct
canRead YES  
canWrite YES  
isHidden NO  
lastmodified {ts '2011-03-08 13:11:56'}  
0
 
_agx_Commented:
Sorry my bad. The field name is "lastModified" not "FileLastModified".  

ie Should be
<cfif dateCompare(now(), csvInfo.LastModified, "d") eq 0>  
0
 
JohnMac328Author Commented:
That seemed to work, thanks as always agx!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 8
  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now