2013-04-08 9 views
0

파일 업로드가 포함 된 양식이 있습니다.Cakephp의 데이터베이스에 저장하기 전에 javascript로 파일 업로드 처리하기

양식의 내용을 내 데이터베이스에 저장하기 전에 파일에서 javascript를 사용하여 일부 메타 정보를 추출해야합니다.

달성 할 수있는 가장 좋은 방법은 무엇입니까?

분명히하기 : 문제는 파일 메타를 추출하는 것이 아니라 $ _FILES 배열에 액세스하여이 데이터로 js 파일을 실행하여 양식을 서버에 제출하도록 허용하는 것입니다.

것은 나는이 현재 달성하고 방법 :

  1. 나는
  2. 그것은 데이터를 저장 컨트롤러 액션에 양식을 제출 한 후 그것을 다시하기 전에 업로드 된 파일의 위치에 뷰 변수를 설정 성공적인 양식 제출시 초기보기 렌더링
  3. 뷰는 변수가 설정되어 있는지 확인하고 자바 스크립트를 실행하여 기본적으로 파일이있는 위치에 액세스 할 수있는 메타를 추출하고 을 업데이트합니다. 아약스 전화.

위의 방법은 폼이 처음에는 그것을 페이지가 다시 렌더링되지 초기 양식 제출 등을 포함시킬 너무 이상적으로 제출하면 메타 저장되는 데이터의 동일한 행에 속한다는 점에서 적합하지 않습니다 양식 제출 후. 나에게 조금 더러운 해킹처럼 보이지만, 나는 이것이 달성 될 수있는 또 다른 방법을 아직 볼 수 없다.

답변

0

아약스 (SWFUpload/Uploadify)를 사용하여 업로드 한 다음 처리 된 파일 데이터가 포함 된보기로 데이터를 보내는 것이 좋습니다.

파일을 업로드하고 콜백 번호를 발행하고 마지막으로 렌더링 된 파일 이름을 요청을 제출 한 대기중인 자바 스크립트 기능으로 되돌릴 수 있습니다.

그냥 내 두 센트

0

어떤 종류의 메타 데이터입니까? 브라우저에서 File API를 지원하는 경우에만 질문에 답변 할 수 있습니다. IE9 이하는 제외됩니다. 자세한 내용은 this MDN article on FileReader을 참조하십시오. 파일에서 특정 유형의 메타 데이터를 추출하는 다양한 라이브러리가 있습니다. 예를 들어 이미지 파일에서 EXIF ​​메타 데이터를 파싱하는 데 관심이 있다면 jQuery-fileExif과 같은 것을 찾아야합니다.

+0

미안하지만, 나는 더 구체적이어야합니다. 내 문제는 js 부분이 아닙니다. 나는 내가 js 파일을 먹이는 입력에 문제없이 필요한 것을 추출 할 수있다. 문제는 양식 제출 과정에서이를 달성하는 방법을 확신 할 수 없다는 것입니다. 즉, 양식 제출을 중지하고 $ _FILES 배열에서 tmp_name을 가져온 다음 js 파일을 추출하는 메타의 실행이 완료되면 양식을 제출하도록 허용합니다. 업데이트 된 질문이 있습니다. – BIOS

관련 문제