我试图使用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
}
...
}
昨晚我找到的解决方案是很容易上传文件....
首先,你必须管理“TempFileManager”。 这是处理临时文件目录,以便它创建的文件和你的工作完成后自动删除比如复制,读取,修改,移动等..
server.setTempFileManagerFactory(new ExampleManagerFactory());
所以,现在你没有管理临时文件,它会自动的工作...
管理这样的POST请求
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 ");
}