bottle框架學習(五)之文件的下載與上傳

下載文件

Bottle文件下載還是使用static_file這個模塊,只是多加了一個參數:download=True,還是看例子吧!

[root@jubottle]# cat download.py
#!/usr/bin/envpython
#coding=utf-8
frombottle import route,run,view,static_file
 
@route('/download/<filename:path>')
defdownload(filename):
    returnstatic_file(filename,root='/home/bottle/static',download=True)
run(host='0.0.0.0',port=8000,debug=True)
[root@jubottle]# ll static/
總用量 100
-rw-r--r--.1 root root 67886 6月  20 2015 lufei.jpg
-rw-r--r--.1 root root 30973 6月  21 2015 suolong.jpg

在瀏覽器中輸入:http://192.168.116.199:8000/download/suolong.jpg

wKiom1WGRPuA1C7QAACT8M6rSVg373.jpg

 

上面是使用URL直接下載,下面演示使用鏈接下載:

[root@jubottle]# cat download.py
#!/usr/bin/envpython
#coding=utf-8
frombottle import route,run,template,static_file
 
@route('/download/<filename:path>')
defdownload(filename):
   returnstatic_file(filename,root='/home/bottle/static',download=filename)
 
@route('/hello')
defhello():
    return template('hello')
run(host='0.0.0.0',port=8000,debug=True)
[root@jubottle]# cat views/hello.tpl
<html>
    <head>
    <title>Download Test!</title>
    </head>
    <body>
    <ahref="/download/lufei.jpg">下載文件</a>
    </body>
</html>

在瀏覽器中輸入:http://192.168.116.199:8000/hello,然後點擊下載文件

wKioL1WGRsGC7wE-AADov2oTHmc318.jpg

 

上傳文件

上傳文件時在前端form表單中,要添加enctype="multipart/form-data"屬性,enctype="multipart/form-data"的意思,是設置表單的MIME 編碼。默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用於文件上傳,只有使用了multipart /form-data,才能完整的傳遞文件數據。

在後端,用request.files方法,獲取到表單傳上來的文件,首先把對象賦值給一個變量名,如uploadfile,然後用save()的方法來保存到服務器中。uploadfile.save(save_path,overwrite=True)save_path是保存文件的路徑,overwrite=True是指如果服務器的上傳目錄中已有同名文件存在,則覆蓋。

[root@jubottle]# cat upload.py
#!/usr/bin/envpython
#coding=utf-8
frombottle import route,run,template,request
 
upload_path='./static'#定義上傳文件的保存路徑
@route('/upload')
defupload():
    return template('upload') #使用get方法會返回這個模版
 
@route('/upload',method='POST')
defdo_upload():
    uploadfile=request.files.get('data') #獲取上傳的文件
    uploadfile.save(upload_path,overwrite=True)#overwrite參數是指覆蓋同名文件
    return u"上傳成功,文件名爲:%s,文件類型爲:%s"% (uploadfile.filename,uploadfile.content_type)
    #filename是獲取上傳文件文件名,content_type是獲取上傳的文件類型
run(host='0.0.0.0',port=8000,debug=True)
[root@jubottle]# cat views/upload.tpl
<html>
    <head>
    <title>Upload Test!</title>
    </head>
    <body>
    <form action="upload"method="POST" enctype="multipart/form-data">
    <input type="file"name="data" />
    <input type="submit"value="Upload" />
    </form>
    </body>
</html>

在瀏覽器中輸入:http://192.168.116.199:8000/upload

wKiom1WGRRvThsvQAABb2rk0cDE317.jpg

點擊瀏覽上傳文件 

wKioL1WGRtCjHMeJAACK_Twkne8237.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章