2014-10-19 4 views
0

클라이언트 측 자바 스크립트 애플리케이션이 있습니다. 특정 트리거에서 응용 프로그램은 window.open()을 사용하여 새 윈도우를 만듭니다. 새 창에서 사용자가 파일을 업로드 할 수있게하려고합니다. 이를 위해 새 창에 양식을 제공했습니다. 형식은 매우 간단합니다. "file"유형의 입력 요소와 제출 버튼입니다. 사용자가 첫 번째 요소를 클릭하면 팝업이 올바르게 나타나 로컬 파일 시스템에서 파일을 선택할 수 있습니다. 사용자가 파일을 선택한 후에 제출 버튼을 클릭하면 창은 단순히 비어있게됩니다. 파일 내용이 서버에 업로드되지 않습니다. 서버는 클라이언트와의 http 세션에 대해 독점 포트 번호 (예 : 30000)의 포트 번호를 사용하는 독점적 인 서버입니다. 원래 창 (즉, 새 창을 열지 않고)에서 동일한 자바 스크립트를 사용하면 파일 내용이 게시되고 서버에서 파일 내용을 수신하는 것으로 나타납니다. 그러나 새 창에서 실행하면 아무 일도 일어나지 않습니다. 스크립트 (이 기능에 필요한 핵심 부분)는 다음과 같습니다.자바 스크립트를 사용하여 새 창에서 파일 업로드 아무 것도하지 않습니다.

myWin = window.open("", "", "width=400, height=400,scrollbars=yes, resizable=yes"); 

var myForm  = myWin.document.createElement("form"); 
myForm.action = ""; 
myForm.method = "post"; 
myForm.enctype = "multipart/form-data"; 
myWin.document.body.appendChild(myForm); 

var myInp = myWin.document.createElement("input"); 
myInp.type = "file"; 
myInp.name = "filename"; 
myForm.appendChild(myInp); 

var myBtn = myWin.document.createElement("input"); 
myBtn.type = "submit"; 
myBtn.value = "Upload"; 
myBtn.onclick = "Upload"; 
myForm.appendChild(myBtn); 

무엇이 잘못 될 수 있습니까? 새 창에 대해 추가 설정이 있습니까? 새 창이 열릴 때 동일한 출처 정책이 유지되지 않기 때문에 업로드를 수행하지 않는 것으로 의심됩니다 - 독점 포트 번호가 첫 번째 창에서 두 번째 창으로 복사되지 않을 수 있습니다. 그러나 - 나는 확실하지 않다. 그리고 내가 이랬다해도 나는이 문제를 어떻게 해결할 지 모릅니다. 어떤 도움을 주셔서 감사합니다. 감사.

답변

0

URL이없는 빈 창이 열리고 있습니다. 또한 양식의 작업을 공백으로 설정하면 동일한 페이지에 양식을 제출하게됩니다.

팝업에 빈 URL이 있으면 제출할 페이지가 없으므로 양식이 아무 곳에 나 표시되지 않습니다.

는 다음 중 하나를 시도해보십시오

  1. 당신이 양식을 제출하고자하는 실제 페이지에 액션 문자열을 (이 제어 출처 간 아니다)를 설정합니다. 예 : <form action="submit.php">

  2. JavaScript로 작성하는 대신 실제로 양식을 포함하는 페이지를 열어 팝업의 URL을 설정하십시오. 그것은 동일한 모양/크기를 갖지만, 바로 제출 될 것입니다. 해당 페이지 (PHP 또는 ASP 인 경우)에서 양식 제출을 처리하거나 올바르게 작업을 설정하십시오 (위에서 설명한대로).

관련 문제