当前位置: 首页 > 面试题库 >

如何在Flask中使用Ajax调用上传文件

浦毅
2023-03-14
问题内容

嗨,我对Flask很陌生,我想使用ajax调用将文件上传到服务器。如文档中所述,我将文件上传添加为以下格式:

<form action="" method=post enctype="multipart/form-data" id="testid">
 <table>
  <tr>
   <td>
     <label>Upload</label>
   </td>
   <td>
     <input id="upload_content_id" type="file" name="upload_file" multiple>
     <input type="button" name="btn_uplpad" id="btn_upload_id" class="btn-upload" value="Upload"/>

   </td>
  </tr>
 </table>
</form>

我这样写了ajax处理程序

$(document).ready(function() {
    $("#btn_upload_id" ).click(function() {           
        $.ajax({
            type : "POST",
            url : "/uploadajax",
            cache: false,
            async: false,
            success : function (data) {},
            error: function (XMLHttpRequest, textStatus, errorThrown) {}
        });
    });
});

我不知道如何从中获取上传的文件(不是名称)

  <input id="upload_content_id" type="file" name="upload_file" multiple>

并将文件保存在文件夹中。我不太确定如何从我编写的处理程序中读取文件:

@app.route('/uploadajax', methods = ['POST'])
def upldfile():
    if request.method == 'POST':
        file_val = request.files['file']

如果有人可以帮助,我将不胜感激。先感谢您


问题答案:

要回答您的问题…

HTML:

<form id="upload-file" method="post" enctype="multipart/form-data">
    <fieldset>
        <label for="file">Select a file</label>
        <input name="file" type="file">
    </fieldset>
    <fieldset>
        <button id="upload-file-btn" type="button">Upload</button>
    </fieldset>
</form>

JavaScript:

$(function() {
    $('#upload-file-btn').click(function() {
        var form_data = new FormData($('#upload-file')[0]);
        $.ajax({
            type: 'POST',
            url: '/uploadajax',
            data: form_data,
            contentType: false,
            cache: false,
            processData: false,
            success: function(data) {
                console.log('Success!');
            },
        });
    });
});

现在,在flask的终结点视图功能中,您可以通过flask.request.files访问文件的数据。

顺便说一句,表单不是表格数据,因此它们不属于表。相反,您应该求助于无序列表或定义列表。



 类似资料:
  • 问题内容: 我知道,关于这个主题的话题并非没有,但请耐心等待。我想使用Ajax或等效文件将文件上传到服务器。 我猜我配置ajax函数的方式存在问题,因为在调试模式下,除之外的所有数据均会返回。 我做错了什么吗? 问题答案: 回顾过去,较旧的答案不切实际,不建议使用。暂停整个Javascript以仅上传文件, 您可能会在上传过程中触发其他功能 。 如果您仅将JQuery用于,则我建议使用: Axio

  • 问题内容: 这是我上传多个文件的代码: HTML代码: 密码: 但是它会上传单个文件,而不是多个文件。 问题答案: 在模板中,你需要在上传输入中添加属性: 然后在查看功能中,上传的文件可以通过列表获取。循环此列表并在每个项目上调用save()方法将它们保存在给定路径中: 此外,你可能需要使用secure_filename()来清洁文件名: 你也可以使用此方法生成随机文件名。 完整演示 视图: im

  • 问题内容: 如何使用Ajax在Struts 2中上传文件 问题答案: 下载Struts2 jQuery插件 ,并像通常使用Struts2一样进行操作。

  • 问题内容: 这是我使用拖放功能动态生成的HTML。 这是我的JavaScript代码: 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您使用 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通

  • 问题内容: 这是我使用拖放功能动态生成的html。 这是我的js代码… 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您提交常规表格一样 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通过P

  • 问题内容: 我正在尝试使用jQuery和Ajax函数上传图像,以及如何获取图像文件的所有详细信息,例如我们使用的php 这是我的代码 JS 控制者 视图 响应 C:\ fakepath \ Koala.jpg您没有选择要上传的文件。 请帮忙 问题答案: 您可以在html5中使用FormData API。 您的表格必须是: 然后jQuery: 然后,在控制器中,您将获得数组中的文件。