2017-02-28 7 views
0

"/ public/images"パスに画像を配置しました。今すぐ私が望むように私はURLを得ています。しかし、WebブラウザにそのURLを貼り付けるとすぐに、GET /public/images/food-1-xxhdpi.pngと表示されます。だから私はそれを処理する別のAPIを書く必要がありますか?node.jsのフォルダから画像を読み取れません

メインファイルが

var express = require('express'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 
var app = express(); 
var PORT = 3000; 
var foodtrucklist = require('./controller/foodtrucklist.js'); 
var foodtruck = require('./model/datafoodtruck'); 

var db = mongoose.connect('mongodb://127.0.0.1:27017/quflip'); 

mongoose.connection.once('connected', function() { 
    console.log("Connected to database") 
    foodtruck.save(function(err,foodtrucks){ 
     if (err) res.send(err); 
    }); 
}); 

app.use(bodyParser.urlencoded({extended:true})); 
app.use(bodyParser.json()); 
app.use(express.static(__dirname + '/public/images')); 


app.get('/foodtrucklist',foodtrucklist); 

app.listen(PORT,function() { 
    console.log('express listining on port' + PORT); 
}); 

答えて

0

この行をapp.js

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

マップのWebアプリケーションのルートに/public/imagesフォルダ内の静的コンテンツ。要求がでピックアップすることができるように

app.use('/my-virtual-directory',express.static(__dirname + '/public/images')); 

:だから要求/public/images/food-1-xxhdpi.pngは唯一の完全なパスが.../public/images/public/images/food-1-xxhdpi.png

ある場合は、/food-1-xxhdpi.pngのリクエストをしなければならないのいずれかまたはのようなものにコードの行を変更し動作しますあなたは/my-virtual-directory

を作成することを選択したので...この場合、あなたのファイルが/my-virtual-directory/food-1-xxhdpi.png

明らかになり、これまで何を、あなたはまだ作るためにこれを行うことができますhttps://expressjs.com/en/starter/static-files.html

+0

アプリ。 ( '/ public/images'、express.static(__ dirname + '/ public/images'))を使用します。私のために働いたのは です。ありがとう –

0

あなたがバックエンドを試すことができますが、次のようになります。ここでは特急のための静的ミドルウェア詳細は

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

:それはあなたが内部的にそれを持っているのと同じ方法に外部にマッピングします。次に、フロントエンド用途

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

<img src="images/your image name" alt="" /> 
+0

"コールスタティックファイルにのみこれを使用する"なぜそれだけ?あなたの声明は絶対的なものなので、要求のコンテキストを考慮していないか、または異なる要求によってこのアドバイスが正しくない可能性があります。 –

+0

私は静的ファイルを呼び出すためにこの構造体だけを使用できると言った。 app.use(express.static(__ dirname + '/ public')); イメージをフロントエンドに呼び出すときは、フォルダと名前、イメージ名を拡張子で追加できます。 難しくありません。ただ簡単な問題 –

+0

私のコメントは、あなたの声明の「唯一の」部分と命令的な性質を強調します。あなたのコメントは非常に限定的です。特定の仮想ディレクトリを設定したり、他のパスを使用するなど、他の作業を行うことができます。したがって、あなたがアドバイスする構造だけでなく、 –

0

試行のように、この抽出数:

バックエンド:

var path = require('path'); 
    var app = express(); 
    var express = require('express'); 

    app.use(express.static(path.join(__dirname, 'public'))); 

フロントエンド:

<img src="/images/food-1-xxhdpi.png" alt=""> 
0

私は現在のプロジェクトに取り組んでいますし、次のコードスニペットは、私のために正常に動作:

app.use(express.static('public')); 

と私は.hbsでこれに到達しようとすると、それは同じくらい簡単です:

<img src='/images/image.jpg' alt='...' /> 
関連する問題