파일을 읽기 전에 파일의 길이를 알 수 있는지 알려주실 수 있나요? 이는 용량이 크고 속도가 느린 경우 로드된 데이터의 비율을 추정할 수 있도록 하기 위한 것입니다.
파일을 읽기 전에 파일의 길이를 알 수 있는지 알려주실 수 있나요? 이는 대용량, 느린 속도의 경우 다운로드된 데이터의 비율을 추정할 수 있도록 하기 위한 것입니다.
가능하다고 생각하며 wininet.dll의 msdn 설명에서 찾을 수 있습니다.
파일을 읽기 전에 파일의 길이를 알 수 있는지 알려주실 수 있나요? 용량이 크고 속도가 느린 경우 로드된 데이터의 비율을 추정할 수 있도록 하기 위해서입니다.
파일을 읽기 전에 파일의 길이를 알 수 있는지 알려주실 수 있나요? 용량이 크고 속도가 느린 경우 다운로드된 데이터의 비율을 추정할 수 있도록 하기 위한 것입니다.
서버가 콘텐츠의 길이를 보고하는 경우 가능성이 있습니다.
요청에 대한 정보를 얻으려면 wininet.dll에서 HttpQueryInfo 함수를 사용할 수 있습니다. 이 함수는 필요한 정보를 지정된 배열에 문자열 형식으로 반환합니다.
사용 예
가져오기 섹션에 설명을 추가합니다:
int HttpQueryInfoW(int hRequest,int dwInfoLevel,uchar &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);
또한
#define HTTP_QUERY_CONTENT_LENGTH 5
를 추가한 다음 InternetOpenUrlW를 호출하고 hURL을 가져온 후 코드에 코드를 추가해야 합니다:
int BufLen=2048; int ind=0; uchar buf0[2048]; string s=""; int ContentSize_HttpQueryInfoW=0; int iRes; iRes=HttpQueryInfoW(hURL,HTTP_QUERY_CONTENT_LENGTH,buf0,BufLen,ind); if(iRes<=0) { Print("Error in call of HttpQueryInfoW()"); } else { s=""; for(int k=0;k<BufLen;k++) { s=s+CharToString(buf0[k]);} Print("HTTP_QUERY_CONTENT_LENGTH:",s); if (StringLen(s)>0) ContentSize_HttpQueryInfoW=StringToInteger(s); Alert("콘텐츠 크기=",ContentSize_HttpQueryInfoW); }
yandex.ru의 테스트 예제에서는 다운로드한 파일의 크기에 해당하는 "콘텐츠 크기= 44649"를 얻습니다. 즉, 다운로드 시작(InternetReadFile) 전에 콘텐츠의 길이를 알 수 있습니다.
현재 버전의 스크립트에 이 기능을 추가했습니다.
수고해 주셔서 감사합니다!
완벽하게 작동합니다!
실행하려고 하면 메타트레이더가 치명적인 오류와 함께 닫힙니다. 해결책이 있나요?
WININET_TEST:
다음은 wininet.dll 라이브러리를 사용하여 인터넷에서 페이지(파일)를 다운로드하는 방법을 보여주는 간단한 예입니다.
작성자: MetaQuotes