我已经成功地使用NanoHttpd实现了本地网络上的文件传输。但是,我无法在NanoHttpd响应中发送文件名。接收到的文件的默认名称类似于: localhost_8080。我尝试使用Content-disposition在响应头中附加文件名,但我的文件传输全部失败。我做错了什么?下面是我的实现:
private class WebServer extends NanoHTTPD {
String MIME_TYPE;
File file;
public WebServer() {
super(PORT);
}
@Override
public Response serve(String uri, Method method,
Map<String, String> header, Map<String, String> parameters,
Map<String, String> files) {
try {
file=new File(fileToStream);
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
MIME_TYPE= URLConnection.guessContentTypeFromName(file.getName());
} catch (IOException ioe) {
Log.w("Httpd", ioe.toString());
}
NanoHTTPD.Response res=new NanoHTTPD.Response(Status.OK, MIME_TYPE, bis);
res.addHeader("Content-Disposition: attachment; filename=", file.getName());
return res;
}
}谢谢你的帮忙!
发布于 2015-01-31 18:51:06
您需要指定响应、MIME类型和要发送的字节流。在此之后,您只需添加一个标头,其中包含文件的文件名,因为它是一个http方法。以下是解决此问题的示例代码
@Override
public Response serve(String uri, Method method,
Map<String, String> header, Map<String, String> parameters,
Map<String, String> files) {
FileInputStream fis = null;
try {
fis = new FileInputStream(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
NanoHTTPD.Response res = new NanoHTTPD.Response(Response.Status.OK, "application/vnd.android.package-archive", fis);
res.addHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
return res;
}https://stackoverflow.com/questions/25361457
复制相似问题