gpt4 book ai didi

javascript - 如何将 Canvas 转换为图像以上传到 flask ?

转载 作者:数据小太阳 更新时间:2023-10-29 05:29:59 25 4
gpt4 key购买 nike

好吧,我正在尝试将调整大小的 Canvas 图像作为文件上传到 Flask。

首先,我尝试使用 canvas.toDataURL() 将其转换为 base64(?) 字符串,然后尝试使用带 AJAX 的 formdata 将其作为图像上传, 运气不好。

然后我尝试使用此函数将 base64 转换为 blob:

    function toblob(stuff) {
var g, type, bi, ab, ua, b, i;
g = stuff.split(',');
if (g[0].split('png')[1])
type = 'png';
else if (g[0].split('jpeg')[1])
type = 'jpeg';
else
return false;
bi = atob(g[1]);
ab = new ArrayBuffer(bi.length);
ua = new Uint8Array(ab);
for (i = 0; i < bi.length; i++) {
ua[i] = bi.charCodeAt(i);
}
b = new Blob([ua], {
type: "image/" + type
});
return b;
}

不是图片...

这是我使用的 ajax 形式:

s = new FormData();
s.append('image', toblob(d)); \\I believe I refer to this with request.files['image']?
var g = $.ajax({
url: 'url',
type: 'POST',
processData : false,
contentType : false,
data: s
}) //POSTDATA

这是我目前在服务器端拥有的内容:

@app.route('/requests/<req>', methods=['POST'])
def requests(req=None):
if req == 'upload' and request.method == 'POST' and request.files['file']:
file = request.files['image'] \\referring to formdata() key
if file and allowed_file(file.filename):
n = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'],n))
return redirect(url_for('index', p=n))

除此之外还有更重要的一切

我非常有信心 javascript 在发送数据方面做得很好,因为许多其他 stackoverflow 问题对 PHP 服务器使用相同的方法并且服务器确实在接收数据。

我的问题是我不知道如何将这些数据转换为物理文件以存储到目录中?

  • 我试过使用 upload tutorial但数据不是文件所以那行不通。
  • 我找到一个 tutorial关于如何上传 blob(我认为?)但它不起作用,因为它使用未定义的"file"。

有什么办法可以通过flask或者js把这些数据转成物理镜像文件吗?

谢谢!

最佳答案

找到解决方法了!我没有使用 Flask 的 file.save(),而是使用了 werkzeug's FileStorage()其中(据我所知)是 file.save() 的原始版本,我通过指定 filenamestream(其中是一个 blob FYI)像这样:

FileStorage(stream=request.files['image']).save(os.path.join(app.config['AUTHOR_FOLDER'],'testpic.jpg')))

将其放入脚本中,避开错误 400,勉强拼凑出一个可用的函数!哈哈。

它可以工作,但我不知道它有多安全或有多稳定,只是暂时使用它。如果有人有任何经验,请帮助我。谢谢!

生活真棒!

关于javascript - 如何将 Canvas 转换为图像以上传到 flask ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20733409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com