2

現在、nanoHTTPD を使用してファイルをサーバーにアップロードするプログラムを作成しています。現在、事前に割り当てられた名前でファイルを正常にアップロードできます。ただし、アップロードされているファイルの元の名前を維持したいと思います。

現在のアップロード方法:

Original filename: foo.jpg
Uploaded filename: file123.whatever

アップロード方法:

Original file name: foo.jpg
Uploaded filename: foo.jpg

使用されている HTML は次のとおりです。

  <FORM ENCTYPE="multipart/form-data" ACTION="/uploaded.html" METHOD=POST>
Upload a file: <INPUT NAME="userfile1" TYPE="file">
<INPUT TYPE="submit" VALUE="Send File">
</FORM>

参考までに、バニラの nanoHTTPD コードを次に示します: http://pastebin.com/pMNS3VKf

注: Java SE を使用し、Java EE は避けたいと思います。

どんなアドバイスでも大歓迎です、ありがとう。

編集: 要するに、HTML POST からファイル名を取得する方法を学ぶ必要があるだけです。

4

1 に答える 1

4

あなたのNanoHTTPDが私のものと同じかどうかはわかりませんが、私のものでは、ファイルのパラメーターオブジェクトからファイルを取得するのと同じキーのparmsパラメーターオブジェクトを調べることで、元のファイル名を取得できます。

Enumeration<Object> keys = files.keys()
while (keys.hasMoreElements())
    {
    String key = keys.nextElement().toString();
    String origFileName = parms.getProperty(key);
    String fsFileName = files.getProperty(key);
    this.renameFile(fsFileName, origFileName);
    }

ファイル名を取得したら、任意の方法でファイルの名前を変更できます。(適切なチェックが必要です。元のファイル名を完全に信頼している場合、大きなセキュリティ ホールになる可能性があります。)

于 2012-10-24T00:34:20.733 に答える