2013-06-25 2 views
1

사용자가 요청한 내용에 따라 cffile을 사용하여 새 파일을 만들거나 기존 파일을 업데이트하고 있습니다. 요청은 이전 절차에서 양식을 통해 온다, 그래서 CFFILE 관련된 코드는 다음과 같습니다 : 나는 파일에 작성을 완료 한 있어요 때cffile 쓰기가 성공적임을 어떻게 확인할 수 있습니까?

<cfset thefile = "#form.dyn#"> 
<cfoutput> 
<cfsavecontent variable = "testvar"> 
    #form.editor1# 
</cfsavecontent>  
<cffile action = "write" 
    file = "/var/www/reports/#thefile#.cfm" 
    output = "#testvar#"> 
</cfoutput> 

, 나는이 일이 있음을 사용자에게 확인합니다. 새 파일의 경우 IsDefined를 사용하여 해당 파일이 있는지 확인할 수 있습니다. 그러나 나는 업데이트 된 기존 파일을 확인하는 방법을 생각할 수 없다. 나는 cffile에 try/catch를 고려했다. 그러나 catch가 아무 것도 잘못 될 것 같지 않은 경우에만 작동한다. 캐치에 오류가 없으면 모든 것이 정상이라고 생각할 수 있습니까? 나는 가능한 한 직접 수표를 선호한다. 누구나 아이디어가 있습니까?

+3

Re * IsDefined를 사용하여 * 있는지 확인하십시오. 아니요, 그것은 변수에만 해당됩니다. 파일의 경우 기존 파일 (CF9 +)의 경우 'FileExists'또는 '[GetFileInfo'] (http://help.adobe.com/ko_KR/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-6d02.html)를 사용하십시오. 이것은 과잉이라고 생각되지만. 'cffile' 액션이 실패하면 CF는 에러를 던지고'cfcatch' 절에서 액션을 취할 수 있습니다. – Leigh

+0

감사합니다. FileExists 또는 GetFileInfo에 대한 정보를 제공합니다. 내가 IsDefined를 시도했다면 나는 이것을 발견했을 것이다. –

답변

4

당신은 업로드 된 파일에 대한 다음과 같은 정보를 얻을 수있는 action="list"filter="your-filename"cfdirectory을 사용할 수

행동 = "목록"항목 cfdirectory 당신이 cfoutput과에서 참조 할 수있는 다음과 같은 결과 열을 반환하는 경우 태그 :

  • name : 디렉토리 항목 이름. 항목 "." 및 ".."는 반환되지 않습니다.
  • 디렉토리 : 항목을 포함하는 디렉토리.
  • 크기 : 디렉토리 항목 크기.
  • 유형 : 파일 유형 : 파일, 파일; 디렉토리, 디렉토리.
  • dateLastModified : 항목이 마지막으로 수정 된 날짜입니다.
  • 속성 : 적용 가능한 경우 파일 속성.
  • 모드 : 빈 열; UNIX의 ColdFusion 5 응용 프로그램과의 역 호환성을 유지합니다. 당신에게 관심의

dateLastModified 열입니다.

<cfdump var="#dirQuery#"> 

dateLastModified 열이처럼 액세스 할 수 있습니다 그럼 당신은 당신에게 가능한 정보보고 그 결과를 덤프 할 수

<cfdirectory action="list" name="dirQuery" directory="C:/var/www/reports/" filter="#thefile#.cfm"> 

:

그래서 당신은 같은 것을 할 수 있어야 :

<cfoutput>#dirQuery.dateLastModified#</cfoutput> 
+0

매우 도움이됩니다. –

+0

@BettyMock -이 방법이 효과가 있다면 다른 사람들이 쉽게 찾을 수 있도록 답변으로 선택하십시오. –

2

파일을 업데이트하기 전에 dateLastModified을 얻으려면 CFDirectory을 사용하고 나중에 다시 업데이트하십시오. 일치하지 않으면 업데이트되었습니다.

5

<cffile>이 작동하지 않으면 당신에게 예외를 던져 줘. 그렇지 않으면 안전하게 작동했다고 가정 할 수 있습니다. 앱을 너무 많이 만들지 마세요.

+0

물론, "엔지니어가"무엇을 의미하는지 분명히해야합니다. 나는 무력한 사용자를 기대하고 있으므로 가능한 범위까지 보호해야합니다. –

+0

"Over-engineer"는이 경우 "불필요한 코드 작성"입니다.이 코드를 처리하기 위해 0을 초과하는 코드를 작성한 경우 수행중인 작업입니다. 이미 처리 된 문제를 해결하려고합니다. –

관련 문제