2015-07-19 111 views
-1

我現在正在編寫一個從互聯網抓取圖像並使用它們啓動服務器並寫入html的程序。如何將圖像放到本地主機服務器上

這裏是我的代碼:

import json 
import requests 
import urllib2 
import webserver 
import bottle 
from bottle import run, route, request 

#get images 
r = requests.get("http://web.sfc.keio.ac.jp/~t14527jz/midterm/imagelist.json") 
r.text 
imageli = json.loads(r.text) 
i = 1 
for image in imageli: 
    if i <= 5: 
     fname = str(i)+".png" 
     urllib.urlretrieve(image,fname) 
     i += 1 

#to start a server 
@route('/') 
#write a HTML, here is where the problem is, 
#the content of html is <image src= "1.png"> but the picture is not on the server. 
#and I don't know how to do it 
def index(): 
    return "<html><head><title>Final exam</title></head><body> <img src=\"1.png\"/>\n <img src=\"2.png\"/>\n <img src=\"3.png\"/>\n<img src=\"4.png\"/>\n<img src=\"5.png\"/>\n</body></html>" 
if __name__ == '__main__':   
    bottle.debug(True) 
    run(host='localhost', port=8080, reloader=True) 

,我有該圖像不能在網站上顯示的問題,控制檯說,圖像不能被發現。

我該如何解決這個問題?

+0

該問題是下載或服務的一部分?請首先將您遇到的問題的代碼減少到最小的示例。另見http://sscce.org。 –

+0

你已經在本地保存了圖像,並且有一條瓶子路線,它提供了一些鏈接到它們的HTML,但是實際上爲圖像提供服務的代碼在哪裏? –

+0

問題是,在服務器上,圖像不能上傳,因爲它保存在本地。而我剛剛上傳我的代碼 –

回答

0

這裏的問題是您尚未定義用於提供靜態文件的路徑。您可以設置根目錄中加入這條航線爲靜態文件:

# To serve static png files from root. 
@bottle.get('/<filename:re:.*\.png>') 
def images(filename): 
    return bottle.static_file(filename, root='') 

但你真的應該將這些到一個子目錄,如:

import json 
import requests 
import urllib 
import bottle 
from bottle import run, route, request 

#get images 
r = requests.get("http://web.sfc.keio.ac.jp/~t14527jz/midterm/imagelist.json") 
r.text 
imageli = json.loads(r.text) 
i = 1 
for image in imageli: 
    if i <= 5: 
     fname = "static/{}.png".format(i) # Note update here 
     urllib.urlretrieve(image, fname) 
     i += 1 

#to start a server 
@route('/') 
def index(): 
    return "<html><head><title>Final exam</title></head><body> <img src=\"1.png\"/>\n <img src=\"2.png\"/>\n <img src=\"3.png\"/>\n<img src=\"4.png\"/>\n<img src=\"5.png\"/>\n</body></html>" 

# To serve static image files from static directory 
@bottle.get('/<filename:re:.*\.(jpg|png|gif|ico)>') 
def images(filename): 
    return bottle.static_file(filename, root='static') 

if __name__ == '__main__': 
    bottle.debug(True) 
    run(host='localhost', port=8080, reloader=True) 
相關問題