Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CS50最终项目-由于表单方法错误,从html.site到flask的文件上载无法工作_Python_Html_Flask_File Upload_Cs50 - Fatal编程技术网

Python CS50最终项目-由于表单方法错误,从html.site到flask的文件上载无法工作

Python CS50最终项目-由于表单方法错误,从html.site到flask的文件上载无法工作,python,html,flask,file-upload,cs50,Python,Html,Flask,File Upload,Cs50,最近我一直在努力完成CS50,但现在我正在努力完成我的最终项目。其中一个关键要素是允许用户从html网站上传图像,而图像将通过application.py进行进一步处理。总的来说,我会用烧瓶 不幸的是,这正是我一直在努力的地方。我尝试了所有我能找到的上传图片的方法,结果总是相似的,当按下提交按钮时,我收到一条内部服务器错误消息。我甚至从youtube或论坛上复制代码,这些代码在视频中运行良好,但在我的IDE中却没有。CS50 IDE是否通常会阻止文件上传 如果没有,我将问题隔离到下面的代码中,如

最近我一直在努力完成CS50,但现在我正在努力完成我的最终项目。其中一个关键要素是允许用户从html网站上传图像,而图像将通过application.py进行进一步处理。总的来说,我会用烧瓶

不幸的是,这正是我一直在努力的地方。我尝试了所有我能找到的上传图片的方法,结果总是相似的,当按下提交按钮时,我收到一条内部服务器错误消息。我甚至从youtube或论坛上复制代码,这些代码在视频中运行良好,但在我的IDE中却没有。CS50 IDE是否通常会阻止文件上传

如果没有,我将问题隔离到下面的代码中,如果您能快速查看,我将不胜感激。也许这是一个我不明白的小问题

my application.py中的代码

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/upload", methods=["POST"])
def upload():
    file = request.files["inputFile"]

    return file.filename

if __name__ == "__main__":
    app.run(debug=True)
index.html中的代码

<!DOCTYPE html>

<html lang="en">

    <head>
        FILE UPLOAD EXAMPLE
    </head>
    <body>
        <div class="container">
            <h1>File Input</h1>
            <form method="POST" action="/upload" enctype="multipart/form-data">
                <div class="form-group">
                    <label for="inputFile">File input</label>
                    <input type="file" name="inputFile">
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>
        </div>

    </body>

文件上传示例
文件输入
文件输入
提交
我试图隔离这个问题,我发现一件事是,当按下submit按钮时,表单总是返回“GET”,而表单方法中专门定义了返回应该是“POST”

无论如何,非常感谢您提前提出的任何意见

最好的,
Martin

当您的项目结构中有
模板
目录时,它就会工作

myproject/
    __init__.py
    app.py
    templates/
        index.html
这是因为
Flask
的默认模板路径是
templates
。 如果您想将其更改为“my_templates”的其他内容,则应在创建应用程序时覆盖它

app = Flask(__name__, template_folder='my_templates')

顺便说一句,没有真正的数据库/文件存储代码返回,因此它只返回文件名作为响应。

当您的项目结构中有
模板
目录时,它会起作用

myproject/
    __init__.py
    app.py
    templates/
        index.html
这是因为
Flask
的默认模板路径是
templates
。 如果您想将其更改为“my_templates”的其他内容,则应在创建应用程序时覆盖它

app = Flask(__name__, template_folder='my_templates')

顺便说一句,没有真正的DB/文件存储代码返回,因此它只返回文件名作为响应。

您看到的错误是什么,项目结构是什么样子的?代码的预期结果是什么?我可以看到它只返回提交的文件名。嗨,Shakel,谢谢您的帮助。在浏览器中,我看到一个简单的“500内部服务器错误”,在我的终端a 404中。您看到的错误是什么,项目结构是什么样子?代码的预期结果是什么?我可以看到它只返回提交的文件名。嗨,Shakel,谢谢您的帮助。在浏览器中,我看到一个简单的“500内部服务器错误”“,在我的终端a 404中。谢谢你的描述,但我实际上运行的是这个精确的结构。application.py文件位于项目文件夹中。这个文件夹还有一个子文件夹/模板,在那里我存储了index.htmltanks作为描述,但实际上我正在运行这个精确的结构。application.py文件位于项目文件夹中。这个文件夹还有一个子文件夹/模板,我在其中存储index.html