如何使用python在azure函数中使用http触发器上传html页面中的文件?

2023-12-21

我想要一种方法,如何上传文件(可以是没有 php 的 html,或者一些交互式 azure 上传页面,等等),并通过我的 URL 参数发送参数,这将运行其余的代码使用这个上传的文件(ofc我至少需要将它保存到blob)。

我需要一个rest api,所以我选择了azure函数。

有什么方法可以在 python 中做到这一点吗?我看到了很多 C# 的例子,但 python 的文档很有限。

多谢!


关于这个问题,你可以使用Html Form来实施它。

例如

  1. 网页
<!DOCTYPE html>
<html>
  <script type="text/javascript"
 src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.4.1.js">
</script>
<body>

 <form enctype="multipart/form-data">
    <input name="file" type="file" />
    <input type="button" value="Upload" />
</form>
<progress></progress>

<script language="javascript" type="text/javascript">
$(document).ready(function(){

$(':file').on('change', function () {
  var file = this.files[0];
  console.log(file)


$(':button').on('click', function () {
  var form = new FormData()
  form.append('file',file)


    $.ajax({
    // Your server script to process the upload
    url: '<your azure function app url>',
    type: 'POST',
    crossDomain: true,
    enctype: 'multipart/form-data',
    // Form data
    data:form,

    // Tell jQuery not to process data or worry about content-type
    // You *must* include these options!
    cache: false,
    contentType: false,
    processData: false,

    success :  function(data){console.log(data);},

    // Custom XMLHttpRequest
    xhr: function () {
      var myXhr = $.ajaxSettings.xhr();
      if (myXhr.upload) {
        // For handling the progress of the upload

        myXhr.upload.addEventListener('progress', function (e) {
          if (e.lengthComputable) {
            $('progress').attr({
              value: e.loaded,
              max: e.total,
            });
          }
        }, false);
      }
      return myXhr;
    }
  });

});





});



});

</script>

</body>
</html>
  1. 函数代码(将文件上传到Azure blob)
import logging
import os
import azure.functions as func
from azure.storage.blob import BlobServiceClient, BlobClient
def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    try:
        file=  req.files.get('file')
        logging.info(file.filename)

        connect_str="your storage account connection string"
        container="your container name"

        blob_service_client = BlobServiceClient.from_connection_string(connect_str)
        blob_client =blob_service_client.get_blob_client(container=container,blob=file.filename)
        blob_client.upload_blob(file)
    except Exception as ex:
        logging.info(ex.args)

    return func.HttpResponse(f"the file {file.filename} upload successfully")
  1. Configure CORS for you function enter image description here

  2. Test enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用python在azure函数中使用http触发器上传html页面中的文件? 的相关文章

随机推荐

  • 如何在重新启动之间保留 GoogleAppEngineLauncher 的本地数据存储?

    我在 Mac OS X 上使用 GoogleAppEngineLauncher GAEL 我的应用程序的数据存储状态在服务器重新启动甚至 GAEL 重新启动之间保持不变 但如果我重新启动 数据存储就会重置 是否有一个设置可以防止此重置 或者
  • 使用 NSComparisonResult 对 CoreData 实体进行排序

    我有这个 distanceSorter h distanceSorter m interface CLLocation DistanceComparison NSComparisonResult compareToLocation CLLo
  • 多个 Vue 实例需要多个 Vuex 模块实例

    我正在将 Vue 集成到表单网站上 这意味着如果页面上有多个表单 我必须创建该 Vue 应用程序的多个实例 所有实例共享同一个 Vuex 存储 我创建了一个 Vuex 模块 以便每个 Vue 实例都可以拥有自己的本地状态 我的主要目标是防止
  • 如何在 Hive 数组中搜索项目?

    我使用 Hive 创建了一个包含以下字段的表 ID 大整数 MSISDN 字符串 天丁 月小号 今年 性别微小 关系状态 TINYINT 教育弦 LIKES AND PREFERENCES STRING 通过以下 SQL 命令填充数据 In
  • 在 JavaFX 客户端中播放 h265 HEVC

    我有一个小型 JavaFX 应用程序可以在 Windows Linux 客户端上播放一些 GoPro 视频 过去我使用的是GoPro 4 我将视频下载到客户端并从本地存储播放 像这样 File file new File AnyVideo
  • 原生 PHP 中具有基本授权的 Soap 标头

    我需要连接到 TeraData SOAP API 该 API 现在需要与登录凭据一起发送授权基本标头 我不知道如何解决这个问题 添加基本 授权标头时 我在 SoapUI 中获得了工作权限 请任何人帮助我直接获取代码 这是 SoapUI 发送
  • 给定一个带有文件名的文本文件,如何在当前目录的子目录中查找文件?

    我在不同的子目录中有一堆具有不同名称的文件 我用这些名称创建了一个 txt 文件 但我无法创建find使用该文件进行工作 我看过关于创建列表的问题 不使用的帖子find 虽然不明白原因 建议 我很难举出一个例子 因为我不知道如何重现目录结构
  • Paypal 与 Google 应用程序引擎-python 集成

    我必须将 paypal 与我的应用程序集成 该应用程序是使用 python 构建在应用程序引擎补丁上的 我在网上搜索并发现 paypal 与谷歌应用程序引擎集成中报告的一些问题 如下所示 http groups google com gro
  • Firebase 的云功能 - getaddrinfo ENOTFOUND

    尝试使用 Paypal 的 API 发出请求PayPal 节点 SDK https github com paypal PayPal node SDK exports requestPayment functions https onReq
  • 致命错误导致没有结果出现(Mysqli)

    我在脚本中遇到此错误 我认为这导致搜索栏无法工作 致命错误 在第 89 行对 web stud xxx Mobile app previousquestions php 中的非对象调用成员函数 bind param 它指向的行是这一行 st
  • 将图标添加到 Visual Studio 代码扩展中的活动栏

    我是 VSC 扩展开发的新手 我从扩展 hello world 开始 我想向活动栏添加一个图标 并在单击它时收到通知 我将这些行添加到 package json viewsContainers activitybar id package
  • React-native Android 仅设置纵向手机否则平板电脑显示横向和纵向

    在这种情况下 我在我的应用程序中遇到了一个小问题 我设置了默认肖像 但现在我想在选项卡中显示肖像和风景 而不仅仅是手机 在手机中仅显示肖像 强制更新为肖像 我点击了此链接 但收到此错误 并且我不明白如何创建文件夹来放置数据 我点击了这个链接
  • 对接口编程,而不是 php 中的实现

    主要设计原则之一是针对接口编程而不是实现 这在 php 或任何其他弱类型语言中是否可能 EDIT 我可能没有把问题写得清楚 我并不是说 php 不能使用接口 它显然可以 我的意思是 针对接口而不是实现进行编程 的设计原则在弱类型语言中是否变
  • 作为服务器和客户端运行应用程序

    我想让我的电脑既是服务器又是客户端 这是我的代码 import java net class tester static int pos 0 static byte buffer new byte 100 static void Clien
  • 如何从数组中的数组中删除空值?

    我正在使用 Google 表格和 Google Apps 脚本 我用过 getRange getValues从工作表中获取用户电子邮件 收到的数组示例 user1 user2 user3 user4 user5 user6 如您所见 每行
  • 在只有 4 个样本和大量特征的情况下进行测试训练分割的好方法是什么?

    我有一个包含四个样本 约 25 000 个特征和两个标签的数据集 它是一个基因计数数据集 分割数据的好方法是什么 当我运行模型时 我得到的准确度为1在训练集上 但是0在验证集上 引导值得尝试吗 Labels 0 1 0 1 X train
  • C# Visual Studio 2008 引用 system32.dll ...如何?

    我需要参考 system32 shell32 dll 因为我使用一些 shell 函数来读取回收站 我尝试了 添加引用 gt COM gt Microsoft Shell 控制和自动化 和 添加引用 gt 浏览 gt 直接转到 system
  • 再次动态范围 - 再次使用文本字符串

    我有一系列数据集 稍后用于填充组合框 并且我尝试设置动态范围以仅列出具有有用数据的单元格 总共有 160 行数据 但填充的行数会有很大差异 如果它有影响 如果动态范围检测到 例如 非空白 用于填充该范围内的单元格的公式是 IF ROW RO
  • 比较两个 json 文件:shell 脚本

    我想比较两个 json 文件 如下所示 type 1 children nsubj role topic POS noun role vehicle POS noun 另一种格式类似 但两者之间存在一些差异 因为一个 json 文件由 33
  • 如何使用python在azure函数中使用http触发器上传html页面中的文件?

    我想要一种方法 如何上传文件 可以是没有 php 的 html 或者一些交互式 azure 上传页面 等等 并通过我的 URL 参数发送参数 这将运行其余的代码使用这个上传的文件 ofc我至少需要将它保存到blob 我需要一个rest ap