2

送信者の IP: ポートを入力して、HTTP サーバー (nanoHTTPD を使用) を使用して別のデバイスにファイルを送信するアプリを開発しています。転送は正しく行われていますが、送信されたファイルの正しいファイル名を受け取ることができません (受信者のブラウザによって拡張子なしで「デフォルト」と名付けられています)。HTTP サーバーのコードは次のとおりです。

プライベート クラス WebServer は NanoHTTPD を拡張します {

        public WebServer()
        {
            スーパー (8080);
        }

        @オーバーライド
        public Response serve(String uri, メソッド method,
            マップ ヘッダー、マップ パラメータ、
            マップファイル) {

        // インテントからファイルのパスを受け取る

        インテント インテント = getIntent();
        文字列ファイル名 = intent.getStringExtra(MainActivity.FILENAME);

        FileInputStream ファイル = null;

        試す {

            ファイル = 新しい FileInputStream(ファイル名);


        } キャッチ (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 に答える