2012-07-01 1 views
0

파일 입력을 사용하지 않고 파일 업로드를 위조하고 싶습니다. 파일의 내용은 문자열에서 생성됩니다. 즉 콘텐츠 유형이 "multipart/form-data"인 서버에 일부 문자열을 게시하려고합니다.자바 스크립트에서 양식 게시를 사용하여 문자열을 파일로 업로드

그러나 서버의 도메인이 다르며 CORS를 지원하지 않으므로 XMLHttpRequest를 사용할 수 없습니다. 일반적인 양식 게시 만 사용하여이 작업을 수행 할 수 있습니까?

+0

정상적인 HTML/양식 게시물로, 그것은 작동합니다. 멀티 파트 구조를 수동으로 준비하고 적절한 경계로 내용 유형을 전송해야합니다. 너는 정확히 무엇을하고 싶니? – SuperSaiyan

+0

사실 서버 측 코드를 사용하지 않고 SkyDrive에 파일로 일부 콘텐츠를 업로드하고 싶습니다. SkyDrive는 REST API를 제공하지만 CORS는 지원하지 않습니다. –

+0

양식을 숨겨진 iframe에 타겟팅하는 방법은 무엇입니까? – JSPDeveloper01

답변

0

사실 그것은 좋은 질문입니다.

  • 당신은 반드시이 같은 HTML 양식 뭔가 할 수 있습니다 :

    <form ....> 
    <input id="blah" type="input" name="nameblah" ..> 
    ... 
    </form> 
    

    을하지만 당신이 알고있는 것처럼 아래에 나열된 내 소견에서, 당신을 위해 무엇을 찾고있는 여러 가지 이유로 수 없습니다 , 당신은 정말로 액세스/파일의 "내용"을 수정할 수 없습니다. 즉각적인 해결 방법은 숨겨진 필드를 대안으로 사용하고 enctype=multipart/form-data을 설정하는 것입니다. 그러나 숨겨진 필드의 경우 브라우저에서 적절한 Content-Disposition 헤더를 설정하지 않습니다.

  • 전체 요청 본문을 수동으로 빌드하는 AJAX 호출이있을 수 있지만 이미 언급 한 것처럼 상호 도메인 호출이 될 수 있습니다. 일반적인 우회 기술이 적용됩니다.

해결책은 HTML을 제공하는 서버가 skydrive 요청을 처리하도록하는 것입니다. 이 경우 HTML 양식 또는 자바 스크립트를 사용하여 파일을 업로드하게됩니다. 그러면 파일이 skydrive 서버로 "전달"됩니다.

자바 스크립트로 시도하는 경우 multipart/form-data 형식을 올바르게 입력해야합니다. 여기에있다 RFC

관련 문제