2

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

私有类 WebServer 扩展 NanoHTTPD {

        公共网络服务器()
        {
            超级(8080);
        }

        @覆盖
        公共响应服务(字符串 uri,方法方法,
            地图头,地图参数,
            地图文件){

        //从意图接收我的文件路径

        意图意图 = getIntent();
        字符串文件名 = intent.getStringExtra(MainActivity.FILENAME);

        FileInputStream 文件 = null;

        尝试 {

            文件 = 新文件输入流(文件名);


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

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

谁能给我一些想法,如何从 HTTP 服务器获取正确的文件名?希望有人可以在这里帮助我。谢谢!

4

1 回答 1

4

这取决于您的服务器(脚本)接受什么,发送时您应该添加带有文件名的标题,这可以是:

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

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

于 2014-01-27T08:48:28.110 回答