2014-12-23 3 views
0

NanoHttpd 라이브러리를 사용하여 양식의 POST 요청을 사용하여 Android 서버에 파일을 업로드하려고합니다. 서버 쪽에서 POST 요청을받습니다. 내 질문은 장치 메모리의 어딘가에 저장할 수 있도록 POST 요청에서 파일을 검색하는 방법입니다. NanoHttpd로 POST 요청에서 파일 가져 오기

형태 :

<form action='?' method='post' enctype='multipart/form-data'> 
    <input type='file' name='file' />`enter code here` 
    <input type='submit'name='submit' value='Upload'/> 
</form> 

제공 방법 : 내가 솔루션은 파일 업로드 아주 쉽게 발견

@Override 
public Response serve (IHTTPSession session) { 
Method method = session.getMethod(); 
String uri = session.getUri(); 

    if (Method.POST.equals(method)) { 
     //get file from POST and save it in the device memory 
    } 

    ... 

} 

답변

2

지난 밤 ....

먼저 당신이 관리가 'TempFileManager '. 그것은 '파일을 생성 및 복사와 같은 작업 완료 후 자동으로 삭제, 읽기, 편집 등 이동 있도록 당신이하지 자동으로 작업의 임시 파일을 관리 할 수 ​​있습니다 그래서 지금 ...

server.setTempFileManagerFactory(new ExampleManagerFactory()); 

을 핸들 임시 파일 디렉토리의 ...

은 내가 원하는대로, 내가 내부 메모리에 파일을 저장할 수 있었다 내 솔루션에이 코드를 채택함으로써이

private Response POST(IHTTPSession) { 

    try { 
     Map<String, String> files = new HashMap<String, String>(); 
     session.parseBody(files); 

     Set<String> keys = files.keySet(); 
     for(String key: keys){ 
      String name = key; 
      String loaction = files.get(key); 

      File tempfile = new File(loaction); 
      Files.copy(tempfile.toPath(), new File("destinamtio_path"+name).toPath(), StandardCopyOption.REPLACE_EXISTING); 
     } 


    } catch (IOException | ResponseException e) { 
     System.out.println("i am error file upload post "); 
     e.printStackTrace(); 
    } 

    return createResponse(Status.OK, NanoHTTPD.MIME_PLAINTEXT, "ok i am "); 
} 
+2

같은 POST 요청을 관리합니다. 또한 동일한 키를 사용하여 session.getParams() 해시 맵에서 원래 파일 이름을 검색 할 수있었습니다. – zxzak