Web.py POST StringIO 用PIL打开

发布于 2022-09-01 07:10:11 字数 587 浏览 32 评论 0

POST发送数据:

python# encoding:utf-8
import requests
from StringIO import StringIO

img = open('test.jpg').read()
img = StringIO(img)
files = {'img': img}
baseUrl = r'http://localhost:8080/test'
requests.post(baseUrl, files = files)

在web.py里

pythonimport web
from PIL import Image
urls = ('/test', 'Test')

class Test:

    def GET(self):
        pass
    def POST(self):
        data = web.input()
        # 如何用PIL打开获取来的StringIO?
        img = Image.open(StringIO(data.img)) # 报错

线谢谢各位了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黑凤梨 2022-09-08 07:10:11

upload.py

import requests

r = requests.post('http://127.0.0.1:8080/upload', files={
    'img': open('test.png', 'rb')
})
print r.text

main.py (儲存圖片到指定路徑並另存縮圖)

# -*- coding: utf-8 -*-
import uuid
import re
import web
from PIL import Image

urls = {
    '/upload', 'Upload'
}


class Upload:
    def __init__(self):
        self.upload_dir = "./upload"

    def GET(self):
        pass

    def POST(self):
        data = web.input(img={})

        if 'img' in data:
            filepath = data.img.filename.replace('\\', '/')
            extension = filepath.rsplit(".", 1)[1]
            extension = re.sub("[^a-zA-Z0-9]", "", extension).lower()
            filename = str(uuid.uuid4()) + "." + extension
            fout = open(self.upload_dir + '/' + filename, 'w')
            fout.write(data.img.file.read())
            fout.close()

            self.thumbnail(filename)
            return "ok"

    def thumbnail(self, filename):
        img = Image.open(self.upload_dir + '/' + filename)
        img.thumbnail((256, 256))
        img.save(self.upload_dir + '/thumbnail/' + filename)


if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()
野鹿林 2022-09-08 07:10:11

你得把报的具体错误贴上来。
不看错误内容就来问。。。有时候可能是个很简单的错误,比如在接收post过来的参数的时候data.files.img写成了data.img之类的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文