gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 21:44:39 25 4
gpt4 key购买 nike

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

我需要一个 REST API,所以我选择了 Azure Functions。

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

非常感谢!

最佳答案

针对该问题,您可以使用Html Form来实现。

例如

  1. HTML 页面
<!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>
  • 函数代码(将文件上传到 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")
  • 为您的功能配置 CORS enter image description here

  • 测试 enter image description here

  • 关于python - 如何使用python在azure函数中使用http触发器上传html页面中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60889319/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com