1

私のアプリでは、ユーザーは画像をサーバーにアップロードでき、アップロードしたファイルをこのようにアップロードフォルダーに入れます

  • 公衆

  • アップロード

しかし、私が奉仕するとき

<img src='upload/image.jpg'/>

404 エラーがあります。

私はエクスプレスを使用し、

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

アップロードしたすべての画像をパブリック フォルダに配置する必要があるということですか。ハード ドライブに保存しきれないほど多くの画像がある場合は、残りを別のサーバーに配置できませんか?

4

4 に答える 4

2

いいえ、アップロードされたすべてのファイルをパブリック フォルダーに配置する必要はありません。

Express では複数のミドルウェアを構成できるため、もう 1 つのミドルウェアを追加して、目的のディレクトリから静的コンテンツを提供できます。

ディレクトリを URL パスで指定したい場合は、このようなディレクトリ マウント機能を使用できます !!

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

もちろん、他のサーバーを使用してアップロードされたファイルを保存し、リクエストをプロキシすることでそれらのファイルを取得できます。

app.get('/upload/:fileName',function(req,res) {

     var options = {
        port: 80,
        method : 'GET',
        hostname : "localhost",
        path : "/upload/" + req.params.fileName
     };

    var req = http.request(options,function(response) {     
        response.pipe(res);
    });

    req.on('error',function(err) {
        res.statusCode = 404;
        res.end("Error : file not found");
    }); 

    req.end();
});

このコードは、アップロードされたファイルが元のサーバーに保存されている場合だけでなく、他のサーバーにファイルがある場合にも機能します!!

于 2013-02-11T09:55:33.813 に答える
0

これを使用してみてください:

<img src='/upload/image.jpg'/>

アップロードする前にスラッシュに注意してください。ファイルを保存する場所ではなく、ファイルを参照する方法に問題がある可能性があります。imgタグのあるページがルート ディレクトリにない場合、相対 URLupload/image.jpgは機能しません。を使用する必要があります/upload/image.jpg

于 2012-10-29T20:51:56.013 に答える
0

画像は ./public/upload に入れることができます

于 2012-10-26T06:17:53.937 に答える
0

もし、あんたが

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

含まれるもの./public

/img.png
/img2.png
/logo.png

yourapp.com/img.pngimg.png になります。

yourapp.com/img.png404にyourapp.com/public/img.pngしてimg.pngにしたい場合は、置き換える必要があります

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

app.use("/public",express.static(__dirname + '/public'));
于 2013-02-11T02:37:18.083 に答える