Как загрузить файл на странице html, используя триггер http в функциях azure, используя python? - PullRequest
0 голосов
/ 27 марта 2020

Я хотел бы иметь какой-то способ, как загрузить файл (может быть html без php, или какую-нибудь интерактивную azure страницу загрузки, что угодно), и через мои параметры URL, которые я хотел бы отправить параметры, которые будут запускать оставшуюся часть кода с использованием этого загруженного файла (из c Мне нужно сохранить его как минимум в BLOB-объект).

Мне нужен api rest, поэтому я выбрал azure functions.

Есть ли способ сделать это в python? Я видел много примеров в C#, но документы для python ограничены.

Большое спасибо!

1 Ответ

1 голос
/ 30 марта 2020

Что касается проблемы, вы можете использовать Html Form для ее реализации.

Например

  1. Html page
<!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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...