xxxxxxxxxxxxxs1w 2015-04-04 16:40 采纳率: 0%
浏览 3504

把通过表单上传的图片 使用StringIO 保存,然后再提交到其它服务器?

python Flask框架
Python: 2.7.9
Flask : 0.10.1

通过表单提交的方式,把本地图片上传到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(['pdf', '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 '''
    <!doctype html>
    <title>Upload new File</title>
    <h1>Upload new File</h1>
    <form action="" method=post enctype=multipart/form-data>
      <p><input type=file multiple="" name="file[]">
         <input type=submit value=Upload>
    </form>
    '''
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(['txt', 'pdf', '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 '''
    <!doctype html>
    <title>Upload new File</title>
    <h1>Upload new File</h1>
    <form action="" method=post enctype=multipart/form-data>
      <p><input type=file multiple="" name="file[]">
         <input type=submit value=Upload>
    </form>
    '''
if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0')

  • 写回答

2条回答 默认 最新

  • threenewbee 2015-04-04 18:07
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料