1

画像をアップロードするための単純なサーブレットがあります。ユーザーが画像を選択すると、サーブレットがその役割を果たしてから、アップロードディレクトリに書き込みます。私のプロジェクトレイアウト:

project
    ├───static
    │   ├───img
    │   └───js
    ├───upload
    └───WEB-INF
        └───lib

画像をアップロードした後、ユーザーはその場所にリダイレクトされます。

http://localhost:8080/upload/[image MD5 hash].png

アップロードコードはかなりうまく機能しますが、画像がそこにある場合でも、TomcatはURLを要求すると404エラーを返します。

> wget http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\GnuWin32/etc/wgetrc
--2013-01-16 03:45:33--  http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png
Resolving localhost... 127.0.0.1, ::1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 404 Not Found
2013-01-16 03:45:33 ERROR 404: Not Found.
> 

update classes and resourcesIDEであるIntellijをクリックすると、次のように機能します。

> wget http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\GnuWin32/etc/wgetrc
--2013-01-16 03:48:11--  http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png
Resolving localhost... 127.0.0.1, ::1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11666 (11K) [image/png]
Saving to: `f5d1da2cadf3bd1c1b9196ec522a5d73.png'

100%[==========================================================>] 11,666      --.-K/s   in 0s

2013-01-16 03:48:11 (72.9 MB/s) - `f5d1da2cadf3bd1c1b9196ec522a5d73.png' saved [11666/11666]
>

2つ目は、このイメージを手動で削除しても、ダウンロードできることです(Tomcatは何らかのキャッシュを実行しますか?):

> del f5d1da2cadf3bd1c1b9196ec522a5d73.png
> wget http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\GnuWin32/etc/wgetrc
--2013-01-16 04:12:25--  http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png
Resolving localhost... 127.0.0.1, ::1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11666 (11K) [image/png]
Saving to: `f5d1da2cadf3bd1c1b9196ec522a5d73.png'

100%[==========================================================>] 11,666      --.-K/s   in 0s

2013-01-16 04:12:25 (93.2 MB/s) - `f5d1da2cadf3bd1c1b9196ec522a5d73.png' saved [11666/11666]
> 

私のweb.xmlファイル:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
    <url-pattern>/upload/*</url-pattern>
</servlet-mapping>

誰かが問題の場所を教えてもらえますか?

4

2 に答える 2

3

これは、ファイルのアップロードを処理する正しい方法ではありません。アップロードしたファイルをデプロイフォルダに保存しないでください。また、コンテナ固有のデフォルトサーブレットをwebapp自体にマップしないようにする必要がありますweb.xml。アップロードされたファイルは、ローカルディスクファイルシステムの他の場所にある、デプロイに関係のない固定フォルダーに保存する必要があります<Context>。Tomcatの新しいファイルを介して公開します。例えば

<Context docBase="/var/webapp/upload" path="/upload" />

参照:

于 2013-01-16T03:20:24.030 に答える
0

開発でデプロイする場合、リソースはワークスペースではなく開発リソースにデプロイされます。ワークスペースで削除する場合は、開発リソースを変更するために再デプロイする必要があります。

私の英語でsory、

于 2013-01-16T01:37:46.543 に答える