1

NanoHttpd ライブラリを使用して、フォームからの POST 要求を使用して Android サーバーにファイルをアップロードしようとしています。サーバー側で POST リクエストを受け取ります。私の質問は、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
    }

    ...

}
4

1 に答える 1

6

昨夜、ファイルをアップロードするのはとても簡単な解決策を見つけました....

まず、「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 ");
}
于 2014-12-25T07:35:01.957 に答える