android - 如何使用FileInputStream设置文件名?

时间:2014-01-27 08:43:09

标签: android file httpserver nanohttpd

我正在开发一个应用程序,通过键入发件人的IP:端口,使用HTTP服务器(使用nanoHTTPD)将文件发送到另一台设备。传输工作正常,但是我无法接收发送文件的正确文件名(被接收者的浏览器命名为'default',没有任何扩展名)。这是我的HTTP服务器代码:

private class WebServer extends NanoHTTPD {

        public WebServer()
        {
            super(8080);
        }

        @Override
        public Response serve(String uri, Method method,
            Map header, Map parameters,
            Map files) {

        //receive my file's path from an intent

        Intent intent = getIntent();
        String filename = intent.getStringExtra(MainActivity.FILENAME);

        FileInputStream file = null;

        try {

            file = new FileInputStream(filename);


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return new NanoHTTPD.Response(Status.OK, "/", file);
      }

我以为我可以使用FileInputStream(new File(String path, String name))修复它,但它仍然无法正常工作,它仍然给我一个文件名为0字节的“默认”文件名。

任何人都可以告诉我如何从HTTP服务器获取正确的文件名?希望有人可以帮助我。谢谢!

1 个答案:

答案 0 :(得分:3)

这取决于您的服务器(脚本)接受的内容,发送时您应该添加包含文件名称的标头,这可以是:

Content-Disposition: attachment; filename="fname.ext"

示例来自http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html“19.5.1 Content-Disposition”