2014-10-07 2 views
0

누군가 이력서를 업로드 한 경우 잘 작동하는 온라인 응용 프로그램을 만들었습니다. 이력서가 선택 사항 인 위치를 사용할 수 있지만 대기열에 파일이 없으면 시스템에서 오류가 발생합니다.ColdFusion cffile 업로드 - 선택 사항

IsDefined 및 StructKeyExists를 시도했지만 제대로 작동하지 않습니다. 어떤 제안이라도 대단히 감사합니다.

+4

양식 코드를 공유하십시오. 항상 양식 코드를 공유하십시오. form.submitapp 및 form.uploadfile에 대한 cfparam이 있습니까? 그렇다면 문제 일 가능성이 있습니다. –

+0

또한 "빈"은 "정의되지 않음"과 다른 개념입니다. 대부분의 (모든 것은 아님) 양식 필드는 값이 들어 있는지 여부에 관계없이 제출됩니다. 즉, 액션 페이지에 정의됩니다. 그들은 단지 빈 문자열, 즉 ""값을 가질 것입니다. 'structKeyExists'와 같은 함수는 필드 * value *를 검사하지 않습니다. 필드가 정의되어 있는지 확인합니다. 따라서 작업에 대해 올바른 비교를 사용하고 있는지 확인하십시오. – Leigh

+2

cfquery 대신 cfinsert를 사용한다는 사실은 선택적 양식 필드와 같은 것들을 처리 할 수있는 유연성을 감소시킵니다. –

답변

0

대괄호는 다음과 같이 말합니다. 사용해보기 :

<cfset destination = expandPath("./uploads")> 
<cfif IsDefined('form.submitapp')> 
    <cfif IsDefined("form.uploadfile") AND len(trim(form.uploadFile))> 
    <cffile action="upload" filefield="uploadfile" destination="#destination#" nameConflict="makeUnique"> 
    <cfif isDefined("CFFILE.serverFile")> 
     <cfset form.resume = CFFILE.serverFile> 
    </cfif> 
    </cfif> 
</cfif> 
+1

실제 양식과 오류 메시지 (힌트, 힌트 ;-)를 보지 않고 말하기는 어렵지만'cfparam'이 없어도 오류가 발생할 수 있습니다. 비어있는 경우에도 파일 필드는 여전히 정의됩니다. 'cffile action = "upload"'를 호출하면 오류가 발생합니다. 위의'len (trim (..)) '체크는 그 문제를 피해야한다. @BigMike - isDefined ("CFFILE.serverFile")는 필요 없습니다. 이는 업로드가 성공한 후에 항상 정의되는 시스템 변수입니다. – Leigh

+0

좋은 지적합니다. –