как получить доступ к изображениям на диске на локальном хосте и получить доступ через URL-адрес на веб-сайте [дубликат]

OK. Поэтому я понял, как это сделать, используя LineCollecion, чтобы нарисовать линию на оси.

import numpy as np
import pylab as pl
from matplotlib import collections  as mc

segments = []
colors = np.zeros(shape=(10,4))
x = range(10)
y = np.random.choice(10,10)
i = 0

for x1, x2, y1,y2 in zip(x, x[1:], y, y[1:]):
    if y1 > y2:
        colors[i] = tuple([1,0,0,1])
    elif y1 < y2:
        colors[i] = tuple([0,1,0,1])
    else:
        colors[i] = tuple([0,0,1,1])
    segments.append([(x1, y1), (x2, y2)])
    i += 1     

lc = mc.LineCollection(segments, colors=colors, linewidths=2)
fig, ax = pl.subplots()
ax.add_collection(lc)
ax.autoscale()
ax.margins(0.1)
pl.show()

159
задан user124114 3 May 2012 в 15:58
поделиться

5 ответов

express.static() ожидает, что первым параметром будет путь , а не имя файла. Я хотел бы предложить создать еще один подкаталог для размещения вашего index.html и использовать его.

Обслуживание статических файлов в документации Express .

68
ответ дан Gajus 19 August 2018 в 05:36
поделиться
  • 1
    И только для информации, он будет обслуживать index.html по умолчанию в этом другом каталоге – TheSteve0 12 February 2014 в 04:55
  • 2
    Если есть только один параметр - тогда express.static ожидает, что одним параметром будет путь .... – Seti 16 December 2016 в 09:21

Если у вас есть эта настройка

/app
   /public/index.html
   /media

, тогда это должно получить то, что вы хотели

var express = require('express');
//var server = express.createServer();
// express.createServer()  is deprecated. 
var server = express(); // better instead
server.configure(function(){
  server.use('/media', express.static(__dirname + '/media'));
  server.use(express.static(__dirname + '/public'));
});

server.listen(3000);

Трюк покидает эту строку как последний резерв

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

Что касается документации, поскольку Express использует связующее ПО, мне было проще просто посмотреть исходный код подключения напрямую.

Например, эта строка показывает, что поддерживается index.html https://github.com/senchalabs/connect/blob/2.3.3/lib/middleware/static.js#L140

164
ответ дан 250R 19 August 2018 в 05:36
поделиться
  • 1
    Application.configure() был зарегистрирован как наследие в 3.x и удален в 4.x. См. Ответ ChrisCantrell для обновленного примера. – Anm 26 January 2015 в 16:19
  • 2
    Спасибо, это очень помогло – mdegges 22 April 2016 в 01:09
  • 3
    что это __dirname? Какова его ценность? – Abhi 30 July 2016 в 09:23
  • 4
    устаревший для последних экспресс. – John Heeter 30 July 2017 в 05:06

В новейшей версии выражения «createServer» устарел. Этот пример работает для меня:

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

//app.use(express.static(__dirname)); // Current directory is root
app.use(express.static(path.join(__dirname, 'public'))); //  "public" off of current is root

app.listen(80);
console.log('Listening on port 80');
112
ответ дан ChrisCantrell 19 August 2018 в 05:36
поделиться

npm install serve-index

var express    = require('express')
var serveIndex = require('serve-index')
var path = require('path')
var serveStatic = require('serve-static')
var app = express()
var port = process.env.PORT || 3000;
/**for files */
app.use(serveStatic(path.join(__dirname, 'public')));
/**for directory */
app.use('/', express.static('public'), serveIndex('public', {'icons': true}))

// Listen
app.listen(port,  function () {
  console.log('listening on port:',+ port );
})
1
ответ дан Rejayi CS 19 August 2018 в 05:36
поделиться

res.sendFile & amp; express.static оба будут работать для этого

var express = require('express');
var app = express();
var path = require('path');
var public = path.join(__dirname, 'public');

// viewed at http://localhost:8080
app.get('/', function(req, res) {
    res.sendFile(path.join(public, 'index.html'));
});

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

app.listen(8080);

Где public - это папка, в которой код на стороне клиента

Поскольку предложил на @ATOzTOA и , поясняемые @Vozzie , path.join принимают пути для объединения в качестве аргументов, + передает один аргумент пути.

20
ответ дан student 19 August 2018 в 05:36
поделиться
  • 1
    path.join принимает пути для объединения в качестве аргументов, + передает один аргумент пути. – ATOzTOA 27 April 2018 в 16:47
  • 2
    @ATOzTOA вы можете объяснить больше, пожалуйста – student 28 April 2018 в 09:56
  • 3
    Что говорит @ATOzTOA, вы должны изменить path.join(public + 'index.html') на path.join(public, 'index.html'). И пока на нем измените __dirname + "/public/" на path.join(__dirname, 'public') – Vozzie 1 May 2018 в 04:01
Другие вопросы по тегам:

Похожие вопросы: