Seite 1 von 1

BottlePy Datei hochladen

Verfasst: Mittwoch 7. März 2012, 14:43
von seishin
Hi,
nachdem ihr mir schon so großartig geholfen habt.

Ich habe mich an das BottlePy Tutorial gehalten, das Script jedoch wie folgt abgeändert.

upload.py

Code: Alles auswählen

from bottle import route, request, run, template

@route('/')
def index():
	return template('layout.tpl')

@route('/upload', method='POST')
def do_upload():
	data = request.files.data
	if data.file:
		raw = data.file.read() # This is dangerous for big files
                #hier ?
		filename = data.filename
		return "Hello! You uploaded %s (%d bytes)." % (filename, len(raw))
	return "You missed a field."
	
run()
layout.tpl

Code: Alles auswählen

<form action="/upload" method="post" enctype="multipart/form-data">
	<input type="text" name="name" />
	<input type="file" name="data" /><br>
	<input type="submit" name="upload" />
</form>
Meine Frage bei upload.py in der Zeile mit #hier ?
Wie vermag man denn da nun die Datei auf den Server zu schreiben?
Oder habe ich da komplett einen Denkfehler?
Desweiteren wird ja darauf hin gewiesen das diese Möglichkeit nicht gut ist... hat jemand evtl. eine alternative Lösung?

Falls ihr da irgendwelche Links hättet zu github oder bitbucket oder ähnliches.
Wo ich Beispiele finde, Grandios!
Sonst natürlich auch zu jeglicher Idee, Anregung, mein verbindlichsten Dank.


Gruß

Re: BottlePy Datei hochladen

Verfasst: Mittwoch 7. März 2012, 14:51
von BlackJack
@seishin: Was denkst Du denn an was `raw` gebunden ist?

Re: BottlePy Datei hochladen

Verfasst: Mittwoch 7. März 2012, 15:02
von nomnom

Code: Alles auswählen

from bottle import route, request, run, template

@route('/')
def index():
    return template('layout.tpl') # da muss soweit ich weiß 'layout' hin

@route('/upload', method='POST')
def do_upload():
    data = request.files.data
    if data.file:
        raw = data.file.read() # This is dangerous for big files
        # „raw“ beinhaltet nun den Inhalt der Datei. Den kannst du jetzt ganz normal
        # in eine Datei schreiben (file.write(...)). Das sollte man am „data.file.read“
        # erkennen können
        filename = data.filename
        return "Hello! You uploaded %s (%d bytes)." % (filename, len(raw))
    return "You missed a field."
	
run()

Re: BottlePy Datei hochladen

Verfasst: Mittwoch 7. März 2012, 16:02
von seishin
Großartig ihr seid die Beste und Python sowieso!

Code: Alles auswählen

import os
from bottle import route, request, run, template

PATH = 'Pfad halt wohin...'

@route('/')
def index():
	return template('layout') #@nomnom beides geht...

@route('/upload', method='POST')
def do_upload():
	data = request.files.data
	if data.file:
		raw = data.file.read() # This is dangerous for big files
		with open(os.path.join(PATH, data.filename),'wb') as f:
			f.write(raw)
		filename = data.filename
		return "Hello! You uploaded %s (%d bytes)." % (filename, len(raw))
	return "You missed a field."
	
run()
Vielen herzlichen Dank!