파일 URL을 사용하여 웹에서 파일을 다운로드하는 스크립트를 작성했습니다. 다음 유형의 ActiveXObject가 있습니다.파일 다운로드를 위해 콜백을 구현하는 방법은 무엇입니까?
var objHTTP = new ActiveXObject("MSXML2.XMLHTTP");
objHTTP.open("GET", strFileURL, false);
파일 크기가 100MB 미만인 작은 크기의 파일에 이상적입니다. 그러나 크기가 100MB를 초과하는 파일을 다운로드하려고하면 스크립트가 중단됩니다. 그런 다음 시도해 보았습니다.
objHTTP.open("GET", strFileURL, true);
이 경우 콜백 기능을 구현해야합니다. 콜백을 구현 한 다음 사용하는 방법을 모르겠습니다. 누군가 나를 도울 수 있습니까? 나는 TestComplete 7을 사용하고있다. 내가 작성한 스크립트.
var objHTTP = new ActiveXObject("MSXML2.XMLHTTP");
objHTTP.open("GET", strFileURL, true);
objHTTP.onreadystatechange = Callback;
objHTTP.send();
while((objHTTP.readyState != 4) && (objHTTP.readyState != 'complete'))
{
Delay(100);
}
if(200 != objHTTP.Status)
{
Log.Error("The " + strFileURL + " file was not found." + " The returned status is " + objHTTP.Status);
return;
}
콜백 기능을 구현하는 방법을 모르겠습니다. 누군가 내게 구현을 제공 할 수 있습니까?
감사
오, 콜백에 대한 답변을하지 못해 죄송합니다. 콜백 함수를 사용하는 것이 문제를 해결할 것이라고는 생각하지 않지만이 방법을 사용하면 다운로드가 실패 할 때 설정된 readyState 속성의 값을 찾을 수 있습니다. 간단합니다. "objHTTP.onreadystatechange = OnReadyStateChange;". 이 함수는 동일한 단위로 선언해야합니다 : function OnReadyStateChange() {/ * objHTTP는 전역 변수 */Log.Message 여야합니다 ("readState가"+ objHTTP.readyState "로 변경됨);} – Alex
답장을 보내 주셔서 감사합니다. 문제는 while 루프에 없습니다. 문제는 send 메서드에서 발생합니다. 코드를 디버깅 할 때 스크립트가 send 메서드에서 중단된다는 것을 알았습니다. while 루프가 시작될 때까지 도달하지 못했습니다. –
흠 ... 그러면 구성 요소의 버그처럼 보입니다. 그런 다음 ServerXMLHTTP 개체를 사용하려고합니다. 설명에 따라 다른 통신 메커니즘을 사용하므로 문제가 존재하지 않을 수도 있습니다. 귀하의 경우이 구성 요소가 작동합니까? – Alex