2

NanoHTTPD を使用して HTML コンテキストを提供する Android アプリがあります。アプリでNanoHTTP 2.0.5を使用しています。

ファイルのアップロードに問題があります。kr d.mp4という名前のファイルをアップロードするとします。アップロードされますが、名前がkに変更されます (スペースの前の 1 文字から始まり、拡張子を含むファイル名の最後の文字が削除されるまで)。

スペースのあるファイルのアップロードはすべて、この動作を示します。他のファイル名を試しました:

 ORIGINAL         GOT THIS
-----------------------------
NO_SPACE.TXT      NO_SPACE.TXT  (works as expected)
ABC DEF.txt       AB
AB1234 gf.txt     AB123
A D.txt           Failed to upload ???

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

IRC チャンネル#android-dev by user: memoryleakの助けを借りて、これを機能させました。これはエンコーディング関連の問題でした。

これを修正するには、にアップロードするときにこれを行います:

クライアント側 (Javascript) :

formdata.append("filedata", file, encodeURIComponent(file['name']));

サーバー側 (NanoHTTPD) :

URLDecoder.decode(session.getParms().get(entry.getKey()), "UTF-8");
于 2014-01-06T12:11:50.837 に答える