1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用bottle进行web开发(9):文件上传;json传递

使用bottle进行web开发(9):文件上传;json传递

时间:2023-08-26 22:53:03

相关推荐

使用bottle进行web开发(9):文件上传;json传递

1.文件上传

如果要完成文件上传,则需要对上文的form做一点改动,具体如下:

<form action="/upload" method="post" enctype="multipart/form-data">Category: <input type="text" name="category" />Select a file: <input type="file" name="upload" /><input type="submit" value="Start upload" /></form>

bottle把file的upload 是放在BaseRequest.files里的(以FileUpload进程的方式存在),这里,我们的例子,都是假设存在硬盘里的

@route('/upload', method='POST')def do_upload():category = request.forms.get('category')upload = request.files.get('upload')name, ext = os.path.splitext(upload.filename)if ext not in ('.png','.jpg','.jpeg'):return 'File extension not allowed.'save_path = get_save_path_for_category(category)upload.save(save_path) # appends upload.filename automaticallyreturn 'OK'

2)有些js或者REST的客户端,发送application/json 给服务器,通过这个方式来传递信息。这个时候,BaseRequest.json属性就保存这些信息。

The raw request body

You can access the raw body data as a file-like object via BaseRequest.body. This is a BytesIO buffer or a

temporary file depending on the content length and BaseRequest.MEMFILE_MAX setting. In both cases the body

is completely buffered before you can access the attribute. If you expect huge amounts of data and want to get direct

unbuffered access to the stream, have a look at request[’wsgi.input’].

3)WSGI环境

每个的BaseRequest都保存着一个WSGI的环境字典。

举例如下;

@app.route('/my_ip')def get_remote_ip():ip=request.environ.get('REMOTE_ADDR')return template('Your IP is:{{IP}}',IP=ip)

4)template

bottle自带一个模板,称之为:SimpleTemplate Engine

使用这个模板,可以通过template()函数或者view()装饰器。

只需要把模板名称和要替换的参数信息传递进去即可。

比如:

@route('/hello')@route('/hello/<name>')def hello(name='World'):return template('hello_template', name=name)

bottle去哪里找这些模板呢:去./VIEWS/目录下或者Bottle.template_path环境变量。

Templates are cached in memory after compilation. Modifications made to the template files will have no affect until

you clear the template cache. Call bottle.TEMPLATES.clear() to do so. Caching is disabled in debug mode.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。