我使用android应用程序中的以下代码将blob上传到Azure blob存储。注意:下面的sasUrl
参数是从我的web服务获取的签名url:
// upload file to azure blob storage
private static Boolean upload(String sasUrl, String filePath, String mimeType) {
try {
// Get the file data
File file = new File(filePath);
if (!file.exists()) {
return false;
}
String absoluteFilePath = file.getAbsolutePath();
FileInputStream fis = new FileInputStream(absoluteFilePath);
int bytesRead = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
while ((bytesRead = fis.read(b)) != -1) {
bos.write(b, 0, bytesRead);
}
fis.close();
byte[] bytes = bos.toByteArray();
// Post our image data (byte array) to the server
URL url = new URL(sasUrl.replace("\"", ""));
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setConnectTimeout(15000);
urlConnection.setReadTimeout(15000);
urlConnection.setRequestMethod("PUT");
urlConnection.addRequestProperty("Content-Type", mimeType);
urlConnection.setRequestProperty("Content-Length", "" + bytes.length);
urlConnection.setRequestProperty("x-ms-blob-type", "BlockBlob");
// Write file data to server
DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
wr.write(bytes);
wr.flush();
wr.close();
int response = urlConnection.getResponseCode();
if (response == 201 && urlConnection.getResponseMessage().equals("Created")) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
该代码对于小的blob来说运行良好,但是当blob达到一定的大小(取决于我测试的手机)时,我开始出现内存不足的异常。我想拆分这些blob并将它们分块上传。然而,我在网上找到的所有示例都是基于C#的,并且都在使用存储客户端库。我正在寻找一个Java/Android示例,它使用Azure Storage Rest API分块上传blob。
这里发布了一个Azure存储Android库。示例文件夹中有一个基本blob存储示例。您可能希望使用的方法是blob类中的uploadFromFile。默认情况下,如果blob的大小小于64MB,则会尝试将其放入一个put中,否则将以4MB的块发送blob。如果希望减少64MB的限制,可以在CloudBlobClient(将影响所有请求)的BlobRequestOptions对象上设置singleBlobPutThresholdInBytes属性,或者将其传递给uploadFromFile方法(仅影响该请求)。存储库包括许多方便的功能,如自动重试和块put请求的最大执行超时,这些都是可配置的。
如果您仍然想使用更手动的方法,这里提供了PutBlock和Put Block List API参考,并提供了通用的跨语言文档。这些在Azure存储Android库的CloudBlockBlob类中有很好的包装,称为uploadBlock和commitBlockList,这可能会为手动请求构造节省大量时间,并提供上述一些便利。
我能够通过Node/Express将文件上传到Azure blob存储,没有任何问题,但我找到了关于如何下载文件的非常少的文档/完整示例。我在教程页面上找到了这个,但是运气不好: 是否有其他人使用node.js/express从Azure blob存储下载文件?您是否使用Azure或其他方法(例如请求)。您能否分享如何从Azure获取文件并将其流式传输到文件夹?
我正在尝试将一个blob存储从我的存储帐户映射到我的databricks集群。我正在跟踪这个链接,显然我只需要在我的笔记本上执行这段代码: 代码蟒蛇: 我被困在参数中:< code>(scope = " 在Database ricks CLI上尝试过:
我正在尝试将一个图像文件从html页面上传到azure blob存储。到目前为止,我已经编写了一个web服务来为我的blob容器创建SAS。由此,我创建了一个uri,格式为“blob地址”/“容器名称”/“blob名称”?“sas”。我的html页面上有一个上传控件。 然后,我尝试使用以下代码上传该文件: 其中blobPath是上面提到的uri,upFile是我的html上传控件。 当我试图上传文
每当学习新技术时,我都喜欢写一个尽可能简单的例子。通常这意味着引用最少的控制台应用程序。我一直在尝试编写一个读取和写入Azure表存储的应用程序,但收效甚微。我使用了这个操作指南作为基础,但尝试在Main方法中完成所有操作。类似的方法在blob存储中效果很好,但表存储遇到了麻烦。 我能够使用此代码创建一个表。 运行此代码后,我可以使用Azure存储资源管理器在我的存储中看到一个表。(仍然不知道如何
我正在数据砖笔记本上运行这个 我得到了这个错误 原因:存储异常:服务器无法对请求进行身份验证。确保授权头的值格式正确,包括签名。 我尝试使用 以获取 Azure Blob 存储中的任何更新,但仍收到上述错误。
我创建了一个使用Firebase存储运行的应用。这个想法是,您从照片库中选择一张图片,然后将其上传到Firebase存储。与Firebase的连接似乎工作正常,我可以选择图像。当我按下提交按钮将其上传到Firebase时,问题就出现了。 当我点击它一次,什么也没发生。 当我点击它几次时,我得到一条消息“发生未知错误,请检查HTTP结果代码和内部异常”。。 我该怎么做,寻求建议。。 从舱单中: 从活