Comment faire pour coder l'image à envoyer sur Python serveur HTTP?
Je voudrais un peu d'aide sur mon gestionnaire suivant:
class MyHandler(http.server.BaseHTTPRequestHandler):
def do_HEAD(client):
client.send_response(200)
client.send_header("Content-type", "text/html")
client.end_headers()
def do_GET(client):
if client.path == "/":
client.send_response(200)
client.send_header("Content-type", "text/html")
client.end_headers()
client.wfile.write(load('index.html'))
def load(file):
with open(file, 'r') as file:
return encode(str(file.read()))
def encode(file):
return bytes(file, 'UTF-8')
J'ai de ce, la fonction load()
est quelqu'un d'autre dans le fichier. Envoi d'une page HTML sur mon gestionnaire HTTP semble être au travail, mais comment puis-je envoyer une image? Comment ai-je besoin d'encoder et de ce Content-type
dois-je utiliser?
Aide est grandement appréciée!
(PS: je souhaite que l'image qui est de l'envoyer à voir dans le navigateur si je me connecte à mon serveur http)
OriginalL'auteur Thomas W | 2015-02-17
Vous devez vous connecter pour publier un commentaire.
Pour une image PNG, vous devez définir le type de contenu "image/png". Pour jpg: "image/jpeg".
D'autres types de Contenu peuvent être trouvés ici.
Edit: Oui, j'ai oublié de codage dans ma première édition.
La réponse est: Vous n'avez pas! Lorsque vous chargez votre image à partir d'un fichier, il est dans le bon encodage déjà.
J'ai lu au sujet de votre problème de codec: Le problème est, comme beaucoup je vois dans votre fonction de charge. Ne pas essayer d'encoder le contenu du fichier.
Vous pouvez utiliser pour les données binaires ceci:
Désolé, j'ai oublié à propos de l'encodage dans la première édition.
il ne se passe rien quand je fais ça, il ne cesse de chargement et de chargement...
Quand vous faites quoi?
Quand je change de 'r' pour 'rb' il charge pendant 3 minutes et j'ai 1000 lignes de mots au hasard...
OriginalL'auteur Juergen
Comme mentionné par Juergen vous devez régler en conséquence le type de contenu.
Cet exemple j'ai trouvé peut vous aider à: https://github.com/tanzilli/playground/blob/master/python/httpserver/example2.py
L'exemple est en Python 2, mais les changements doivent être mineures.
Ah et il est préférable d'utiliser
self
au lieu declient
-> voir PEP 8, Python guide de styleJ'aurais donné plus d'informations... Ligne
39
doit être changé. Vous devez l'ouvrir en mode binaire:f = open(curdir + sep + self.path, 'rb')
en Outre l'impression des déclarations et de l'importation (from http.server import [...]
au lieu defrom BaseHTTPServer import [...]
) doit être changé.OriginalL'auteur Liblor