ユーザーが画像をアップロードし、画像をディスクに保存してから Web ページに表示できるようにしようとしていますが、画像を正しく表示できません。これが私のものbin/app.py
です:
import web
urls = (
'/hello', 'index'
)
app = web.application(urls, globals())
render = web.template.render('templates/', base="layout")
class index:
def GET(self):
return render.hello_form()
def POST(self):
form = web.input(greet="Hello", name="Nobody", datafile={})
greeting = "%s, %s" % (form.greet, form.name)
filedir = 'absolute/path/to/directory'
filename = None
if form.datafile:
# replaces the windows-style slashes with linux ones.
filepath = form.datafile.filename.replace('\\','/')
# splits the and chooses the last part (the filename with extension)
filename = filepath.split('/')[-1]
# creates the file where the uploaded file should be stored
fout = open(filedir +'/'+ filename,'w')
# writes the uploaded file to the newly created file.
fout.write(form.datafile.file.read())
# closes the file, upload complete.
fout.close()
filename = filedir + "/" + filename
return render.index(greeting, filename)
if __name__ == "__main__":
app.run()
そしてここにありますtemplates/index.html
:
$def with (greeting, datafile)
$if greeting:
I just wanted to say <em style="color: green; font-size: 2em;">$greeting</em>
$else:
<em>Hello</em>, world!
<br>
$if datafile:
<img src=$datafile alt="your picture">
<br>
<a href="/hello">Go Back</a>
これを行うと、画像のリンクが壊れます。画像を正しく表示するにはどうすればよいですか? 理想的には、ディスクから読み取って表示する必要はありませんが、それが可能かどうかはわかりません。また、ファイルを絶対パスではなく相対パスに書き込む方法はありますか?