如何将画布转换为图像上传到烧瓶?

 我恨数学忆万年丶 发布于 2023-02-08 16:12

好吧所以我正在尝试将调整大小的画布图像作为文件上传到Flask.

首先,我尝试使用canvas.toDataURL()它将其转换为base64(?)字符串,然后尝试使用formdataAJAX 将其作为图像上传,没有运气.

然后我尝试使用此函数将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/', 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服务器使用相同的方法,并且服务器确实收到了数据.

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

我尝试过使用上传教程,但数据不是文件,因此不起作用.

我找到了一个关于如何上传blob的教程(我认为?)但它不起作用,因为它使用了未定义的"文件".

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

谢谢!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有