이미지 업로드 진행 상황을 게시하려고합니다. 내 클라이언트로 okhttp를 사용하여 업로드하고, 멀티 파트 파일을 패키지하려면 mimecraft로 업로드하십시오.OkHttp 버퍼는 flush()에도 불구하고 데이터를 업로드하기 전에 ~ 800kb.
데이터가 소켓에 쓰여질 때 바이트 수를 기록하기 위해 로그를 추가했습니다 (올바르게 말할 수있는 경우 4KB의 청크로).
문제는 데이터 덩어리가 기록 될 때마다 outputstream에서 flush를 호출하는 동안 출력 스트림에 ~ 800kb가 기록 될 때까지 아무 것도 업로드되지 않는 것입니다. 일단 그 지점에 도달하면 ~ 100kb를 업로드하는 것처럼 보입니다. 그런 다음 앱은 outputstream에 다른 100kb를 씁니다 (자유 공간과 같이 조금 더 쓸 수 있습니다). 계속 진행합니다.
이 결과는 첫 번째 800kb가 거의 즉시 작성 /보고되고 업로드가 시작되고 (찰스 네트워크 소프트웨어를 통해 추적 됨) 읽기/쓰기/업로드를 시작합니다. 다음 몇 초 동안 100kb, 그리고 나서 마지막 바이트를 출력 스트림에 기록한 후 업로드의 100 %가 기록됩니다. 네트워크 클라이언트가 아직 네트워크 버퍼에있는 마지막 800kb를 계속 업로드하고 있으며이를 5-10 초 동안 업로드 한 다음 요청을 완료하면이 사실은 사실입니다.
누구나이 경험을했거나 이것이 okhttp의 일반적인 문제인지 알고 있습니까?
건배
편집 : 800킬로바이트보다 작은 파일을 업로드하면, 필자는 일부 2백50킬로바이트 및 5백킬로바이트 테스트, 그들은 모두 즉시 업로드되기 전에 스트림에 100 %를 기록 얻을하지만 3메가바이트 이미지는 여전히 8백킬로바이트를 업로드합니다 , 그리고 대략 100kb 청크에서 눈을 떼고, 쓰기 루프는 업로드 될 때마다 또 다른 100kb를 쓰면서 거기에 앉는다.
성공 했습니까? 또한 업로드 코드를 공유하십시오. –
이것에 관한 어떤 소식이라도 나는 같은 문제에 직면 해있다? – coalmee