NanoHttpd сохранить загруженные файлы
Я просмотрел много тем, но не могу найти ответ на свой вопрос...
Таким образом, я мог запустить веб-сервер на своем устройстве, и когда я пытаюсь загрузить файл, браузер говорит "загрузить успешно", но я не смог найти файл на своем устройстве, и я не знаю, загружен ли он на устройство, Я установил все разрешения и различаю 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);
}
}
1 ответ
Я знаю, что это очень поздний ответ, но я публикую ответ для дальнейшего использования.
NanoHttpd автоматически загружает файл и сохраняет его в каталоге кэша и возвращает информацию (имя, путь и т. Д.) В карте файлов и параметров. Напишите следующий код в методе подачи.
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();
}