【问题标题】:How to write a text file from a webserver to an Azure Fileshare?如何将文本文件从 Web 服务器写入 Azure 文件共享?
【发布时间】:2018-01-11 17:02:58
【问题描述】:

我们目前有一个网页,在提交表单时使用 PHP 并在网络服务器上创建一个文本文件。我们希望将此文本文件写入 Azure 文件共享(而不是 blob),以便我们可以从 VM 访问它。我们该怎么做呢,我们已经尝试过使用 HTTPS POST 请求,并且在使用 CORS 时遇到了麻烦,现在我们迷路了。

    function sendFile(){
        var xhttp = new XMLHttpRequest();
        xhttp.open("PUT","https://sofyvhdfiles.file.core.windows.net/sofyvhd/test.txt",false);
        xhttp.setRequestHeader("Authentication", "SharedKey myaccount:[Key Here]");
        xhttp.setRequestHeader("x-ms-version","2017-04-17");
        xhttp.setRequestHeader("x-ms-content-length",102400);
        xhttp.setRequestHeader("x-ms-type","text/plain; charset=UTF-8");
        xhttp.send();
        var response = JSON.parse(xhttp.responseText);
        console.log(response);
    }

    sendFile();

【问题讨论】:

  • 可以添加目前尝试过的相关代码吗?
  • 我添加了我们一直在使用的函数。我们运行它并得到错误,预检响应没有“Access-Control-Allow-Origin”标头。
  • 不确定是否/如何将 CORS 支持添加到 azure 文件共享,但您当然可以通过 PHP 发送请求。如果您使用 Javascript 创建文件,您可以将其发布到您的 PHP 网络服务器并让 PHP 执行 PUT 操作。例如,您可以使用phphttpclient.com

标签: javascript php azure cors


【解决方案1】:

您可以使用Azure portal为文件存储服务设置CORS规则。


更新:

感谢 Gaurav 在评论中提醒。当您使用 Javascript 时,最好使用 SAS(共享访问签名)来创建文件。 SAS 在前端使用起来比 SharedKey 更容易、更安全。您可以按照以下步骤进行操作。

  1. 从 Azure 门户生成 SAS 并复制 SAS token:

  1. 使用带有x-ms-typex-ms-content-length 的HTTPS PUT 调用https://sofyvhdfiles.file.core.windows.net/sofyvhd/test.txt + SAS token

【讨论】:

  • 这应该可以解决问题,我明天去看看。谢谢!
  • Nour El-Din Ayad - 不幸的是它不会。并不是说亚伦提供的答案不正确,而是因为您做错了。 Aaron --> 要求您更新答案并通过共享访问签名进行上传。
猜你喜欢
  • 2022-01-21
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 2021-01-10
  • 2020-07-15
  • 1970-01-01
相关资源
最近更新 更多