먼저 사전에
감사합니다, 여기에 몇 가지 일반적인 조언은 다음과 같습니다
시도는 장치의 사소한 일을 할 수 있습니다. 이미지 위에 마스크를 두거나 회전/크기 조정을하는 것은 매우 간단하며 장치에서 수행 할 수 있습니다. 이렇게하면 사용자는 아무 것도 업로드 할 필요가 없으며 (은으로 대기) 서버가 많이로드되지 않습니다.
큰 사진과 그림이 커질 수 있습니다. 이것을 고려하십시오. 생각 나는 아이디어는 사용자가 이미지/비디오를 한 번만 업로드해야하지만 최종 결과를 다운로드하기 전에 여러 조작을 수행 할 수 있어야한다는 것입니다. 그렇지 않으면 긴 대기 시간과 높은 트래픽으로 끝나게됩니다.
사진/비디오를 자신의 서버로 업로드 (아마도 개인)하기 시작하면 얻을 수있는 최대한의 보안을 사용하고 있는지 확인하고 (SSL은 반드시 있어야 함) 사용자에게 콘텐츠를 업로드 할 것이라고 알려줍니다 귀하의 서버에. 또한, 당신은 그들에게 거부 할 수있는 선택권을 주어야합니다. 그렇지 않으면 소송을 당할 수도 있습니다.
지금, 그것의 기술적 인 부분에 :
업에 대한 워크 플로는/서버 /로부터 파일을 다운로드하는 것은 거의 항상 동일합니다 :
- 열기에 연결하여
Socket
- 이 파일에 스트림을 취득하여 서버, (귀하의 경우,
FileInputStream
)는 01,239,426 이진 데이터의
- 읽기 청크-array
- , 소켓이 완료
- 에서 출력 스트림에 읽기 청크 쓰기 스트림과 서버에서 다음 소켓
을 닫습니다, 당신은 그것을 할 다른 방법으로 주위 InputStream로부터 읽어 들여, 내용을 FileOutputStream
에 기입합니다.
Socket server = new Socket("192.168.178.32", 1337);
OutputStream outputStream = server.getOutputStream();
FileInputStream in = null;
try {
in = new FileInputStream("/some/path/to/gras.jpeg");
// Write to the stream:
byte[] buffer = new byte[1024]; // 1KB buffer size
int length = 0;
while ((length = in.read(buffer, 0, buffer.length)) != -1){
outputStream.write(buffer, 0, length);
}
outputStream.flush();
} finally {
if (in != null) in.close();
socket.close(); // Will close the outputStream, too.
}
이 코드는 여기에 던져 질 수있는 예외가 있다는 사실을 일축 :
다음은이 볼 수있는 방법의 작은 예입니다. 적절한 방법으로 처리해야합니다.당신이 고려해야
뭔가 사용자가 (터널을 통과 할 때, 예를 들어) 가로 챌 수있는 모바일 인터넷 연결에서 콘텐츠를 업로드 할 수도있다. 이 경우 재개 가능하도록 업/다운로드를 구현해야합니다.
답장을 보내 주셔서 감사합니다. 귀하의 예를 들어, 클라이언트가 이미지를 보내, 어떻게 처리 된 이미지를받을 수 있습니까? 이미지를 보낸 후 관중을 들으려면 서버를 열어야합니까? – Doon
큰 비디오 파일을 처리하는 데 시간이 걸릴 수 있으므로 처리가 완료되면 푸시 알림을 위해 Cloud2Device 통신을 사용하는 것이 좋습니다. 예를 들어 [Google GCM] (http://developer.android.com/guide/google/gcm/index.html)을 살펴보십시오. –