2

画像をアップロードして速達で表示しようとしています。「public/images」にアップロードするようにアプリを構成しました

  app.use(express.bodyParser({ keepExtensions: true, uploadDir: './public/images' }));

アップロードはうまくいきますが、アップロードされた画像を jade テンプレートに表示する方法が見つかりません。req.files オブジェクトから取得した画像パスは「public/images/imagename.jpg」のようなものですが、画像を表示できる唯一の方法は次のような URL です。

http://localhost:3000/images/imagename.jpg

req.files から「public」パラメータを削除する方法はありますか、それとも他の解決策はありますか?? みんな、ありがとう!

編集:

わかりました、ありがとうございます。しかし、私の質問は、翡翠のテンプレートに画像を表示することについてでした。この行を追加しました:

app.use('/public/images/', express.static(__dirname + '/public/images/'));

そして今、そのディレクトリ内のファイルにアクセスできます。しかし、私の翡翠のテンプレートでそれらを表示することはできません。これを試すと( foto_path === req.files.image.path で):

img(src= #{material.foto_path})

私はこのURLを取得します:

http://localhost:3000/undefinedpublic/images/b1ce29f40ac7692ac62637e42f0f9128.jpgundefined

「未定義」は何のためですか?

ありがとう!!

4

1 に答える 1

1

Express は、Apache などの他の従来のサーバーとは少し異なる方法でパブリック ディレクトリを構成することを知っておく必要があります。静的アセットを表示する場合、行は次のようになります。

app.use(express.static(__dirname + '/public'));

これが、アプリ内で公開されている唯一のフォルダーになります。これが、URL にディレクトリの名前を追加することが Express で冗長であると判断される理由です。URL は、実際のフォルダー構造を反映していません。

ただし、 req.files は実際のパスを表示するため、アプリで操作できます。そうしないと、他の場所では使用できなくなります。src = '/images/imageName.jpg'私の解決策は、ジェイドで直接参照することです。実際の画像名をパラメーターとして渡す必要があります。または、「パブリック」部分を req から取り除いて渡すこともできます。

于 2012-09-03T17:44:37.660 に答える