-1

我是 Flask 的新手,我尝试使用 ajax 上传图片。即使我ImmutableMultiDict([])从输入文件中添加名称,我仍然可以得到。request.files我尝试了许多解决方案,但没有一个适合我。

**js-ajax **

$(document).ready(function () {
//alert('ya allah');

$('#upload-file').on('submit', function (event) {

    var formDataRaw = $('#upload-file')[0];
    var form_data = new FormData(formDataRaw);
    $.ajax({
        data: {
            normal: +'',
            anormal: +'',
            r: +'',
            form_data
        },
        type: 'POST',
        url: '/process',
        contentType: false,
        cache: false,
        processData: false,
        async: false
    })
        .done(function (data) {#....some code
        });

    event.preventDefault();

});

});

我也在输入文件中添加了名称。

html端

<form id="upload-file" method="POST" enctype=multipart/form-data>
                <fieldset style="border: none">
                    <div class="mt-2">

                        <label class="file btn btn-outline-gs m-2 my-sm-0 px-4 d_upload">
                            Upload IMG!
                            <input  type="file"
                                    id="imgInp"
                                    name="photo"
                                    class="i_upload"
                                    hidden/>
                        </label>

                    </div>
                </fieldset>

                <fieldset style="border: none">
                <div class="mb-2">
                        <input id="test"
                               type="submit"
                               value="Predect"
                               class="btn btn-outline-gs"
                               onclick="load(this)"/>
                    </div>
                </fieldset>

            </form>

而且我认为代码很干净,但仍然从 request.files 中获得了 ImmutableMultiDict([]),或者只是带有以下内容的括号request.files['input name']

    if 'photo' in request.files:
        photo = request.files['photo']
        if photo.filename != '' and allowed_file(photo.filename):
            photo.save(os.path.join('static/uploads', photo.filename))
            print(photo.filename)
           f=secure_filename(photo.filename)
4

1 回答 1

0

问题出在我的 jQuery (ajax) 代码中,这个

data: {
            normal: +'',
            anormal: +'',
            r: +'',
            form_data
        },

我用 form_data 传递了其他属性,这是不正确的。它应该是这样的

data: form_data

而不是这个data.name应该是data['name']

于 2020-05-21T02:30:07.770 回答