为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 HTTP 响应中返回 HTML 文件(Azure-Functions)

如何在 HTTP 响应中返回 HTML 文件(Azure-Functions)

翻过高山走不出你 2022-04-23 17:10:46
我正在学习使用 azure-functions,我想知道如何在这段代码上返回 HTML 文件。(天蓝色函数的初始 python 代码)import loggingimport azure.functions as funcdef main(req: func.HttpRequest) -> func.HttpResponse:    logging.info('Python HTTP trigger function processed a request.')    name = req.params.get('name')    if not name:        try:            req_body = req.get_json()        except ValueError:            pass        else:            name = req_body.get('name')    if name:        return func.HttpResponse(f"Hello {name}!")    else:        return func.HttpResponse(            "Please pass a name on the query string or in the request body",            status_code=400        )我想要的是这样的:return func.HttpResponse("\index.html")我怎样才能做到这一点?
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

接受的答案不再有效。现在您需要使用上下文来找到正确的文件夹。类似下面的代码应该可以工作。


import logging

import azure.functions as func import mimetypes



def main(req: func.HttpRequest, context: func.Context) -> func.HttpResponse:

    logging.info('processed request for home funciton')


    filename = f"{context.function_directory}/static/index.html"


    with open(filename, 'rb') as f:

        mimetype = mimetypes.guess_type(filename)

        return func.HttpResponse(f.read(), mimetype=mimetype[0])


查看完整回答
反对 回复 2022-04-23
?
慕少森

TA贡献2019条经验 获得超9个赞

假设您正在按照官方快速入门教程Create an HTTP triggered function in Azure学习 Azure Function for Python,那么您创建了一个函数static-file来处理这些静态文件,这些文件位于static-file您想要的路径或其他路径中MyFunctionProj,index.html依此logo.jpg类推。


这是我的示例代码,如下所示。


import logging


import azure.functions as func

import mimetypes


def main(req: func.HttpRequest) -> func.HttpResponse:

    logging.info('Python HTTP trigger function processed a request.')


    name = req.params.get('name')

    if not name:

        try:

            req_body = req.get_json()

        except ValueError:

            pass

        else:

            name = req_body.get('name')


    if name:

        #return func.HttpResponse(f"Hello {name}!")

        path = 'static-file' # or other paths under `MyFunctionProj`

        filename = f"{path}/{name}"

        with open(filename, 'rb') as f:

            mimetype = mimetypes.guess_type(filename)

            return func.HttpResponse(f.read(), mimetype=mimetype[0])

    else:

        return func.HttpResponse(

             "Please pass a name on the query string or in the request body",

             status_code=400

        )

浏览器中的结果如下图。

//img1.sycdn.imooc.com//6263c2b4000124b405050194.jpg

我的api的文件结构static-file如下。

//img1.sycdn.imooc.com//6263c2bd0001962104800178.jpg

该index.html文件的内容如下。


<html>

<head></head>

<body>

<h3>Hello, world!</h3>

<img src="http://localhost:7071/api/static-file?name=logo.jpg"></img>

</body>

</html>

注意:对于在本地运行,该index.html文件可以正常显示logo.jpg。如果部署到 Azure,则需要在tagcode的属性末尾添加查询参数,例如.srcimg<img src="http://<your function name>.azurewebsites.net/api/static-file?name=logo.jpg&code=<your code for /api/static-file>"></img>


希望能帮助到你。


查看完整回答
反对 回复 2022-04-23
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

我做的很简单,不介意内容(上传文件),它不是那样工作的:)


  if command:

        return func.HttpResponse(status_code=200,headers={'content-type':'text/html'}, 

        body=

"""<!DOCTYPE html>

<html>

<body>

   <form enctype = "multipart/form-data" action = "returnNameTrigger?save_file.py" method = "post">

   <p>File: <input type = "file" name = "filename" /></p>

   <p><input type = "submit" value = "Upload" /></p>

</form>

</body>

</html>

""")


查看完整回答
反对 回复 2022-04-23
  • 3 回答
  • 0 关注
  • 324 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信