我想創建一個小的網路服務器。我阻止顯示帶有專用 html 塊的影像。
有我的網路服務器的代碼
from http.server import SimpleHTTPRequestHandler, HTTPServer
import time
import socket
import json
import os
import socketserver
hostName = "127.0.0.1"
serverPort = 8080
class MyServer(SimpleHTTPRequestHandler):
head = """
<head lang="fr">
<title>Title</title>
<meta charset="utf-8">
</head>
"""
navbar = """<nav><a href="#"><img src="my_img.png"></a></nav>"""
def index(self):
print(os.listdir())
# List the directory -> my_img is present
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(bytes(self.head, "utf-8"))
self.wfile.write(bytes("<body>", "utf-8"))
self.wfile.write(bytes(self.navbar, "utf-8"))
p = """
<div >
<div >
<div ></div>
<div >
<h1>Dashboard</h1>
<h2>Bienvenue !</h2>
<img src="my_img.png">
</div>
</div>
</div>
"""
self.wfile.write(bytes(p, "utf-8"))
self.wfile.write(bytes("</body></html>", "utf-8"))
def do_GET(self):
if self.path == "/":
self.index()
else:
self.send_response(404)
self.send_header("Content-type", "text/html")
self.end_headers()
if __name__ == "__main__":
webServer = HTTPServer((hostName, serverPort), MyServer)
print("Server started http://%s:%s" % (hostName, serverPort))
try:
webServer.serve_forever()
except KeyboardInterrupt:
pass
webServer.server_close()
print("Server stopped.")
所以圖片不顯示
在 chrome 控制臺除錯器上:
Failed to load resource: the server responded with a status of 404 (Not Found)
我使用以下命令啟動 Web 服務器:
python3 WebServer.py
在當前目錄中:
- 網路服務器.py
- my_img.png
uj5u.com熱心網友回復:
感謝@diggusbickus,
適應的部分是在 do_GET 函式中:
def do_GET(self):
if self.path == "/":
self.index()
elif self.path == "/my_img.png":
imgname = self.path
imgname = imgname[1:]
imgfile = open(imgname, 'rb').read()
mimetype = mimetypes.MimeTypes().guess_type(imgname)[0]
self.send_response(200)
self.send_header('Content-type', mimetype)
self.end_headers()
self.wfile.write(imgfile)
else:
self.send_response(404)
self.send_header("Content-type", "text/html")
self.end_headers()
添加了新的 elif,請求影像的名稱。
在此之前,由于 do_GET 函式的限制太多,網頁不應顯示此內容。
我們檢索名稱(去除影像名稱中的第一個字符->“/”)
我們檢索 mimetype (jpeg/png/...)
我們發送影像的位元組。
它解決了我的問題,影像顯示在網頁中。
uj5u.com熱心網友回復:
你的Webserver.py作品很好。(在 macos 上用 firefox/safari/chrome 測驗)
的錯誤
Failed to load resource: the server responded with a status of 404 (Not Found)
出現是因為您請求的資源(例如my_img.png)不存在于請求的路徑中,該路徑應該在錯誤訊息之后顯示。以另一個問題ref為例。
Failed to load resource: the server responded with a status of 404 (Not Found)
/* -here-> */ http://localhost:8080/RetailSmart/jsp/Jquery/style.css
你也應該發布它。
通常,遇到此類錯誤是因為您在 IDE(例如 pycharm)中編譯和啟動腳本,通常將源檔案(例如目錄下的src檔案)和構建檔案(例如dest/output/build目錄)分開。并且有必要使用精確relative path到你的資源,使你的服務器可以正確訪問它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/350280.html
