nodejs 怎么从request获取上传文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs 怎么从request获取上传文件相关的知识,希望对你有一定的参考价值。

参考技术A 可以使用第三方的js库,比如spark-md5.js。上传文件后,调用对应的api即可以获取到上传文件的md5。本回答被提问者采纳

从 WTForms 字段获取上传的文件

【中文标题】从 WTForms 字段获取上传的文件【英文标题】:Get an uploaded file from a WTForms field 【发布时间】:2015-07-28 13:22:00 【问题描述】:

在 Flask 文档中,文件上传示例使用 <input type="file" name="file"> 然后 request.files['file'] 来获取文件。我正在使用 WTForms FileField。使用WTForms而不是自己编写输入html时如何获取上传的文件?

【问题讨论】:

【参考方案1】:

request.files 是一个字典,其中的键是文件字段的名称。您可以使用my_form.my_field.name 获取 WTForms 字段的名称。因此,您可以使用request.files[my_form.my_field.name] 访问从该字段上传的数据。

您可以使用 Flask-WTF FileField 而不是使用 WTForms FileField。它提供了一个data 属性,可以为您获取文件数据。 This is described in the documentation.

from flask import url_for, redirect, render_template
from flask_wtf import FlaskForm
from flask_wtf.file import FileField
from werkzeug.utils import secure_filename

class UploadForm(FlaskForm):
    file = FileField()

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    form = UploadForm()
    
    if form.validate_on_submit():
        filename = secure_filename(form.file.data.filename)
        form.file.data.save('uploads/' + filename)
        return redirect(url_for('upload'))

    return render_template('upload.html', form=form)
<html>
<head>
<title>Upload</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
     form.hidden_tag() 
     form.file 
    <input type="submit">
</form>
</body>
</html>

【讨论】:

以上是关于nodejs 怎么从request获取上传文件的主要内容,如果未能解决你的问题,请参考以下文章

node.js解析excel大文件的问题

nodejs 怎么获取文件大小

从request中获取文件流的两种方式,配置文件上传大小

spring mvc 文件上传怎么过滤文件类型,如exe文件等

使用nodejs中的AWS Lambda函数上传音频文件

javascript结合nodejs实现多文件上传