当前位置: 首页 > 知识库问答 >
问题:

从js将图像文件上载到azure blob存储

欧阳高昂
2023-03-14

我正在尝试将一个图像文件从html页面上传到azure blob存储。到目前为止,我已经编写了一个web服务来为我的blob容器创建SAS。由此,我创建了一个uri,格式为“blob地址”/“容器名称”/“blob名称”?“sas”。我的html页面上有一个上传控件。

然后,我尝试使用以下代码上传该文件:

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("PUT", blobPath);
xhr.send(upFile.files[0]);

其中blobPath是上面提到的uri,upFile是我的html上传控件。

当我试图上传文件时,uploadFailed例程被触发。那么:这样做对吗?如何捕获上传返回的错误,以便查看出了什么问题?

我的sas看起来像:“sr=c

谢谢你的帮助。

共有2个答案

苏高峰
2023-03-14

我现在找到了解决这个问题的方法。我上传的内容如下:

>

  • 我将文件作为数据URL读入文件阅读器

    我对返回的字符串进行切片,并将每个切片发送到服务器,并将其存储在会话变量中

    一旦整个文件被发送出去,我就调用另一个web服务,它将这些片段粘在一起,并将结果转换成字节数组

    字节数组然后作为文件存储在azure的本地存储中

    最后将文件从本地存储传输到blob存储

    参见代码:

    将文件从html上传到azure

  • 柴凌
    2023-03-14

    这当然是正确的方式,但是有一些事情:

    1. 您必须在请求中包含x-ms-blob-type请求头,其值应为BlockBlob

    您可能会发现这些博客文章对于使用SAS和AJAX上传Blob很有用:

    http://coderead.wordpress.com/2012/11/21/uploading-files-directly-to-blob-storage-from-the-browser/

    http://gauravmantri.com/2013/02/16/uploading-large-files-in-windows-azure-blob-storage-using-shared-access-signature-html-and-javascript/

     类似资料:
    • 我试图上传一个图像文件,我得到了使用Imagepicker。 但上面的代码返回以下错误 VERBOSE-2:ui\u dart\u状态。cc(186)]未处理的异常:MissingPluginException(未找到方法任务的实现#通道插件上的startPutFile.flatter.io/firebase_存储)#0 MethodChannel_invokeMethod包:flatter/..

    • 我想在上传到Firebase存储之前减小图像文件大小,因为上传需要很长时间。 这是conatins编辑文本图像视图的表单 单击“保存”按钮时,我同时保存数据(在实时数据库中)和图像(存储)。 那么如何减少图像大小或压缩它呢??

    • 问题内容: 我试图从文件选择器中选择图像文件后立即显示它。文件选择器仅限于.png和.jpg文件,所选文件存储在File类型的变量中。为此,我已经设置了ImageView,并且我希望使用此新文件设置图像,唯一的问题是文件类型不是图像。 如何做到这一点?到目前为止的代码… 问题答案: 您可以简单地用 然后将其放在: 其他构造函数提供了对加载图像所需资源的更多控制。如果要强制将图像设置为特定大小,则可

    • 我已经阅读了与此相关的所有其他答案。但这对我不起作用,或者我只是不明白一些事情。请帮忙。 我正在从客户端发送'image/png'base64字符串。它是这样的:“Ivborw0kggoaaansuheugaaaaaaaaaaa……” 在云函数我有方法: 有什么不对劲?