怎样用 Python 搭建的 Web 服务器来接收浏览器发来的 AJAX 请求并返回数据

2016-04-03 15:44:55 +08:00
 ubuntugx
前台用 jQuery ajax 传了 url 。现在需要处理传来的图片并返回处理完的图片。
我用了 flask 框架,查到是用 request 方法,但始终找不到好的例子。
求提供方法或文章地址。
7427 次点击
所在节点    Python
15 条回复
loading
2016-04-03 15:55:11 +08:00
这个说到底不关 python 的事,建议去补习一下 ajax 是什么。
mringg
2016-04-03 15:57:54 +08:00
图片=文件
ubuntugx
2016-04-03 16:04:38 +08:00
@loading
@mringg 也许我没有理解清楚,是 前端已经传了 url ,现在不知道怎么用 python 在后端获取。
maltoze
2016-04-03 16:15:44 +08:00
file = request.files['file']

差不多是这样吧
mornlight
2016-04-03 16:17:58 +08:00
你的问题可能是:怎么用 Flask 框架搭建一个 API Server 处理前端请求

看文档啊,懒得费力气就看国内各种在线视频网站的 Flask 教程啊,跟着学上手做几个小时就会基本的了,初期你都不需要考虑架构上的问题,看你博客那么多文章也不像没基础的样子。
loading
2016-04-03 16:26:18 +08:00
我给你一段!如果你还是不会,你真的高估了自己,多看文档吧!

@app.route('/download/<path:path>',methods=['GET'])
def download(path):
空格 print path
空格 return send_from_directory('D:\\download\',path)
fy
2016-04-03 16:28:48 +08:00
楼主这表达能力捉鸡啊,我理解大概是这意思:
前端提交了一个 URL ,可能是个图片地址,然后后端要去下载并处理这个文件。

这是一个典型的异步任务场景,至于办法就多了去了,随手搜一搜就行
loading
2016-04-03 16:29:01 +08:00
from flask import send_from_directory


或者用

return redirect(“/download/”+filename)
这样配合 nginx 是一般用途了。
clino
2016-04-03 16:34:24 +08:00
ubuntugx
2016-04-03 16:35:34 +08:00
@loading 谢谢您,我去仔细看看。
@mornlight 谢谢,主要刚刚接触 python 几天,只学了基本语法,到这里就不知道从哪找了。
@fy 嗯是的,谢谢。
loading
2016-04-03 16:36:25 +08:00
建议去看完 flask 那个微博的例子。
不过我感觉你是不懂前端吧。
Biwood
2016-04-03 16:37:11 +08:00
你学东西的跨度还真有点大...首先你得知道怎么用 Flask 搭建一个普通的网站,然后再谈 AJAX 的事
ubuntugx
2016-04-03 16:41:09 +08:00
@Biwood 是…要学的还真是多呢…
clino
2016-04-03 16:44:30 +08:00
哦,刚看了楼主是处理文件的情况,这部分可能 uliweb 和 flask 差别会大一些
前端用 jqupload 上传文件: https://github.com/zhangchunlin/shapps/blob/master/shapps/linci/artifact/templates/Artifact/inc_view.html#L123
后端处理上传过来的文件: https://github.com/zhangchunlin/shapps/blob/master/shapps/linci/artifact/views.py#L102
后端处理文件下载请求,如果出错就返回 json 但 http status code 为错误值,如果文件正常就返回文件: https://github.com/zhangchunlin/shapps/blob/master/shapps/linci/artifact/views.py#L181
IMRES
2016-04-03 18:53:34 +08:00
```python
@app.route('/hello', methods=['POST', 'GET'])
def hello():
if request.method == 'POST':
url = request.form.get('url')
elif request.method == 'GET':
url = request.args.get('url')
return 'hello'
```

只写一个接口看官方文档就可以了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/268284

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX