NanoHttpd保存上传的文件(NanoHttpd save uploaded files)

2019-10-20 03:00发布

我已经看过很多线程,但我不能找到一个答案,我的问题...
所以,我可以在我的设备上启动Web服务器,当我尝试上传的文件浏览器说“上传成功”,但我找不到我的设备上的文件,我不知道它是否被上传到设备。 我设置的所有权限和区分post ,并get我的serve方法。

我想我要上传的文件从参数保存Map<String, String>文件。
我怎么能这样做? 这是不是正确的方式?

这里是我的代码片段:

private class MyHTTPD extends NanoHTTPD {

    public MyHTTPD() throws IOException {
        super(PORT);
    }
    public Response serve(String uri, Method method, Map<String, String> headers, Map<String, String> parms, Map<String, String> files) {           
        if (method.equals(Method.GET)) {
            return get(uri, method, headers, parms, files);
        }
        return post(uri, method, headers, parms, files);
    }

    public Response get(String uri, Method method, Map<String, String> headers, Map<String, String> parms, Map<String, String> files) {
        String get = "<html><body><form name='up' method='post' enctype='multipart/form-data'>"
                + "<input type='file' name='file' /><br /><input type='submit'name='submit' "
                + "value='Upload'/></form></body></html>";
        return new Response(get);
    }

    public Response post(String uri, Method method, Map<String, String> headers, Map<String, String> parms, Map<String, String> files) {
        String post = "<html><body>Upload successfull</body></html>";
        return new Response(post);

    }
}

Answer 1:

我知道,这是一个非常晚回应,但我张贴以供将来参考答案。

NanoHttpd自动上传文件,并保存在高速缓存目录,返回在文件中,而params地图信息(名称,路径等)。 在服务方法写代码如下。

File dst = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() +"/"+ parameters.get("myfile"));
File src = new File(files.get("myfile"));
try {
      Utils.copy(src, dst);
}catch (Exception e){ e.printStackTrace();}

Utils.copy

public static void copy(File src, File dst) throws IOException {
    InputStream in = new FileInputStream(src);
    OutputStream out = new FileOutputStream(dst);

    // Transfer bytes from in to out
    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    in.close();
    out.close();
}


文章来源: NanoHttpd save uploaded files