2014-01-09 4 views
0

내 Java 응용 프로그램에서 병 웹 프레임 워크를 실행중인 서버로 zip 파일을 업로드하려고합니다.자바 프로그램에서 서버로 파일 업로드

이전에 장고 서버를 사용했고 이진 데이터로 변환 한 다음 작은 파일을 업로드하여 게시물 요청을 통해이를 보냈습니다.

zip 파일이 1-10MB 사이이므로이 프로젝트의 가장 좋은 아이디어인지 잘 모르겠습니다.

여전히 바이너리로 변환 한 다음 데이터를 보내거나 권장 할만한 다른 방법이 있습니까?

+0

zip 파일이 바이너리가 아닌 경우 작동하지 않습니다. 전송을위한 텍스트 인코딩에 대해 언급하지 않는 한 (파일 크기가 증가합니다). –

+0

zip 파일이 바이너리가 아닌 경우 무슨 뜻인지 확실하지 않습니다. 모든 것이 바이너리입니다. 파일을 바이너리로 읽어야하고 파일이 있습니다. 나는 바이너리로 읽는 것을 계획하고 있었고 아마도 데이터를 더 적게 만들기 위해 base64로 인코딩했을 것이다. – Ramis

답변

0

대용량 파일을 업로드하면 연결이 99 % 업로드 된 후에 고장 나고 다시 시작해야한다는 두려운 경험을 할 수 있습니다.

HTTP를 통해 서버에 (사건 것 같다) 응용 프로그램에서 큰 파일을 업로드하면, 다음과 같은 방법으로 선호 :

하는 응용 프로그램이 일부 적당한 크기의 작은 덩어리에서 파일을 분할하자를 . 이러한 정크에 일련 번호로 태그를 지정하십시오. 서버에 POST하면이 연결에서 큰 파일을 업로드하고 메타 데이터 (파일 이름 등)를 보냅니다. 그런 다음 청크를 게시하십시오.

서버가 청크를 수신하면 클라이언트에이를 확인해야합니다.

서버 측에서는 전송되고 누락 된 청크를 추적하고 청크 파일을 다시 어셈블 할 논리를 구현해야합니다.

그냥 내 두 센트.

또는 서버가 필요한 청크를 결정하게하십시오. 샘플 대화는 :

Client: I will upload "test.zip" in 4 chunks. 
Server: Go ahead. Please send chunk 1. 
Client: I am sending chunk 1 with checksum X. 
Server: Thank you, checksum is OK. Please send chunk 2. 
Client: I am sending chunk 2 with checksum Y. 
Server: Thank you, checksum is bad. Please send chunk 2. 
Client: I am sending chunk 2 with checksum Y. 
Server: Thank you, checksum is OK. Please send chunk 3. 
Client: I am sending chunk 3 with checksum Z. 
Server: Thank you, checksum is OK. Please send chunk 4. 
Client: I am sending chunk 4 with checksum A. 
Server: Thank you, checksum is OK. Have a nice day. 

는 연결이 고장 경우없는 덩어리의 재 전송을 구현하기 쉬운이 시작.

관련 문제