io上传文件到服务器被占用,把通过表单上传的图片 使用StringIO 接收,然后再提交到其它服务器?...

本文介绍如何使用Python Flask框架实现在A服务器接收图片上传请求后,不保存图片,而是直接将图片转发到B、C、D三个服务器进行处理的过程。涉及到的技术包括使用cStringIO模块来读取文件内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python: 2.7.9

Flask : 0.10.1

python Flask框架。

通过表单提交的方式,把本地图片上传到A服务器,但是A服务器不要保存此图片,而是要通过A服务器把图片提交到B服务器、C服务器、D服务器上去。如何实现?

了解到python的cStingIO、StringIO 模块 可以实现此功能,搜索了一天了,还是不懂如何应用到此处。请各位不吝赐教!

A服务器上的代码:

import os

from flask import Flask, request, redirect, url_for

from werkzeug import secure_filename

import requests

import cStringIO

from cStringIO import StringIO

import Image

UPLOAD_FOLDER = 'c:\uploads_1'

if not os.path.exists(UPLOAD_FOLDER):

os.makedirs(UPLOAD_FOLDER)

else:

pass

ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif'])

app = Flask(__name__)

app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

def allowed_file(filename):

return '.' in filename and \

filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

@app.route('/', methods=['GET', 'POST'])

def upload_file():

if request.method == 'POST':

upload_files = request.files.getlist('file[]')

filenames = []

for file in upload_files:

if file and allowed_file(file.filename):

filename = secure_filename(file.filename)

file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) #使用StringIO时,请注释掉此行,因为我不需要保存图片在此服务器上。

filenames.append(filename)

data = {'file[]': open(os.path.join(app.config['UPLOAD_FOLDER'],filename), 'rb')}

#buf = cStringIO.StringIO(file)

#buf.seek(0)

#buf_img = buf.read()

#data = {'file[]': files=buf_img}

r = requests.post('http://127.0.0.1:5000/',files=data)

return '''

Upload new File

Upload new File

'''

if __name__ == '__main__':

app.run(debug=True,host='0.0.0.0',port=8000)

B服务器上的代码:

import os

from flask import Flask, request, redirect, url_for

from werkzeug import secure_filename

import requests

UPLOAD_FOLDER = 'c:\uploads_2'

if not os.path.exists(UPLOAD_FOLDER):

os.makedirs(UPLOAD_FOLDER)

else:

pass

ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif'])

app = Flask(__name__)

app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

def allowed_file(filename):

return '.' in filename and \

filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

@app.route('/', methods=['GET', 'POST'])

def upload_file():

if request.method == 'POST':

upload_files = request.files.getlist('file[]')

filenames = []

for file in upload_files:

if file and allowed_file(file.filename):

filename = secure_filename(file.filename)

file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

filenames.append(filename)

return '''

Upload new File

Upload new File

'''

if __name__ == '__main__':

app.run(debug=True,host='0.0.0.0')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值