문제

재생 프레임 워크에서 필드를 거부 할 수 있습니까?

filledForm.reject("myField", "You are missing files");
return badRequest(myform.render(filledForm));
.

페이지를 다시로드하지 않고?

파일을 선택할 수있는 파일 입력 필드가 있습니다.거부 및 다시로드에서 파일이 지워지고 오류가 표시됩니다.나는 그들이 선택한 파일을 거기로 선택하고 싶습니다

현재 동작 : 양식을 제출하기 전에 :

전

복종 후 (오류 : 파일이 없음)

전

도움이 되었습니까?

해결책

파일 선택 입력 필드 (즉, <input type="file" ... />)는 다른 입력 필드와 다릅니다. 서버 측에서 값을 미리 채울 수 없습니다. 당신이 할 수있는 경우 거대한 보안 구멍이 될 것입니다 (<input type="file" value="/etc/passwd" .. /> 생각). 서버에서 제출 된 양식을 가져올 때 업로드 된 파일의 전체 경로를 가져 오지 않고 파일의 이름과 내용의 이름 만 사용하지 않습니다.

파일 입력 필드의 값을 정말로 보존 해야하는 경우, 다른 경로로 이동해야합니다. AJAX (Google "Ajax 파일 업로드"에 대한 양식을 제출하십시오. Ajax 응답을 사용하여 파일이 유효했는지 여부를 나타내는 경우


더 밝게 : 일반적인 페이지가 사라지고, 서버 응답이 이전 페이지에 연결되지 않은 새 페이지가 사라졌습니다. Play Forms 도우미는이 페이지의 입력 필드를 이전 값으로 미리 채우지 만 이에 설명 된 바와 같이 파일 입력 필드에는 불가능합니다.

파일을 업로드하기위한 특수 목적 JavaScript 라이브러리가있는 이유입니다. 양식이 주로 파일 업로드를 수행하는 데 주로 관심이 있으면 이들을보아야합니다. (예를 들어, http://fineuploader.com/A>). 서버 측에서 Ajax 쿼리의 대상은 업로드 된 파일을 처리하고 사용자에게 표시 할 수있는 성공 / 실패 메시지를 반환하는 새 작업이됩니다.

다른 팁

서버가 파일 필드의 값을 조작 할 수있는 경우 사용자 하드 드라이브에서 파일을 가져갈 수있는 주요 보안 위험 요소입니다.우리가 가지고있는 두 가지 요구 사항을 살펴보면

  • 서버에서 파일 내용 가져 오기
  • 클라이언트 UI 상태 를 방해하지 마십시오.

    AJAX 파일 업 로더를 사용하는 것이 유일한 옵션입니다.그래서 당신의 흐름이 이제 다음이됩니다 :

    • ajax 업로드 를 통해 파일을 제출하십시오.
    • 내용 의 유효성을 검사합니다.
    • 이후 검색을 위해 파일 저장
    • 상태를 되돌리기 (확인 또는 오류)
    • 오류 에 오류를 표시합니다.
    • 전체 양식이 제출 된 후 이전에 저장 한 파일 를 조회하십시오.

      로드를 신경 쓰지 않으면 비트를 속일 수 있습니다. AJAX로 유효성 검사를 수행하여 오류 메시지를 표시하고 파일을 일반 제출물에 다시 업로드 할 수 있습니다.

      우리가 가진 한계와 함께 일하는 것에 관한 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top