2014-04-14 7 views
0

서버에서 Open Office를 통해 변환/내보내는 (다양한 형식의 HTML) node.js 응용 프로그램에서 'Open Document Format'파일을 다운로드하려고합니다. 이것은 PDF, Text, HTML, Word 등에서 잘 작동하지만 ODF로 내 보낸 문서에서는 작동하지 않습니다. 웹 응용 프로그램 프런트 엔드를 통해 동일한 파일을 직접 변환하고 다운로드하면 정상적으로 작동합니다. XMLHTTP를 통해 다운로드하고 ADO를 사용하여 디스크에 저장하면 어떤 이유로 문서가 손상됩니다. XMLHTTP 및 ADO를 사용하여 문서 형식 파일 열기

Public Function downloadExport(fileToDownload, saveToPath) 

Dim xmlhttp, ostream As Object 

Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") 
Set ostream = CreateObject("Adodb.Stream") 

xmlhttp.setOption(2) = 13056 
xmlhttp.open "GET", fileToDownload, False 
'Cookie headers are correct 
xmlhttp.setRequestHeader "Cookie", "sessionID=Arrays.4Qqu2s32xQQyZA4" 
xmlhttp.setRequestHeader "Cookie", "express_sid=s%3ADHclQm7vYT1Ixa2SD2wjk" 
xmlhttp.send 

ostream.Type = 1 
ostream.open 
ostream.write xmlhttp.responseBody 
ostream.SaveToFile saveToPath, 1 
ostream.Close 

Set ostream = Nothing 
Set xmlhttp = Nothing 

End Function 

당신이 EOF

답변

0

ADO를 스트림을 건너 뛰고 동적 바이트 배열로 .responseBody를 검색 감사합니다

여기 내 기능입니다. 그런 다음 이진 쓰기를 위해 파일을 열고 Byte 배열을 작성하십시오. 그냥 일반 VB6 I/O 문을 사용하십시오.

또한 데이터 선언은 거칠며 xmlhttp은 변형입니다 (따라서 코드는 "행운을 빌어").

더 나은 라이브러리에 대한 참조를 설정하고 초기 바인딩을 사용하고 미리 정의 된 명명 된 상수 값으로 마술 숫자를 대체하십시오.

.setOption의 사용법도 올바르지 않게 표시됩니다. 예외가 발생하지 않았습니까? ("인수가 선택 사항이 아닙니다")? 이것은 메소드가 아니라 속성입니다.

그러나 나는 그것이 당신이보고있는 문제를 해결할 것이라는 것을 의심합니다.

세션 쿠키를 잘못 사용하면 (불법적 인과 같은) 부적절한 행동을하는 것으로 나타납니다. 해당 사이트의 이용 약관을 참조하십시오. 웹 스크랩은 불법 복제입니다.

+0

내 문제가 원래 생각했던 것보다 훨씬 쉽게 해결되는 것처럼 보입니다. "ODF"에서 "ODT"파일 확장자로의 간단한 변경만으로도 문제를 해결할 수있었습니다 (제출 한 코드는 제대로 작동하는 것 같습니다). .setOption 메서드는 XMLHTTP가 인증 기관 오류를 생성하는 것을 방지하기 위해 사용되며 잘못 설정되었습니다. 세션 쿠키는 임시 테스트 문자열 일뿐입니다. 나는 결국 세션 정보를 전역 변수로 설정하고 내 서버 (내 차고에있는 서버, 여기서는 아무런 불법적이지 않은 ...)로 보내는 로그인 기능을 작성합니다. 감사. – user3513451