繁体   English   中英

Azure Blob SAS和本地化文件名

[英]Azure blob SAS and Localized file name

我正在使用jclouds API将文件上传到azure blob,但是找不到使用jClouds API生成SAS的任何方法,因此使用Azure API为特定的blob创建SAS。 我面临的问题是我尝试上传的文件名称中包含本地化字符,例如“Jérôme”,在上传时我必须在特定级别进行编码和解码,因此请确保在生成SAS时我正在传递文件的已解码(实际)名称,但我无法使用生成的SAS访问该文件。

PS。 我在上传和SAS生成中尝试了不同的编码和解码字符串(文件名)组合,但徒劳无功。

我收到的错误是“不存在此类Blob”,在某些情况下为“签名验证失败”

有人可以用合适的方法指导我吗?

如果需要代码段,请告诉我。

上载:

try (BlobStoreContext context = ContextBuilder.newBuilder("azureblob")
                .credentials(this.storeName, this.storeKey)
                .buildView(BlobStoreContext.class)) {
            final BlobStore store = context.getBlobStore();

            payload.getContentMetadata().setContentLength(blobSize);

            final Blob blob = store.blobBuilder(URLEncoder.encode(blobName, StorageConstants.UNICODE_FORMAT)).payload(payload).build();
            logger.debug("Uploading...");
            store.putBlob(this.containerName, blob);
            logger.debug("Uploaded...");
            return true;
        } catch (IOException e) {
            logger.error("IOException while uploading file to azure blob", e);
            return false;
        } catch (Exception e) {
            logger.error("Exception while uploading file to azure blob", e);
            return false;
        }

SAS代

String url = "";
try 
{
    final CloudBlobContainer container = getUploadContainer();
    final CloudBlockBlob blob = container.getBlockBlobReference(blobName);

    url = blob.getUri() +"?"+ blob.generateSharedAccessSignature(getPolicy(), null);

} catch (StorageException e) {
    logger.error("Storage Exception was encounter in generateAttachmentSasUrl() :", e);
} catch (InvalidKeyException e) {
    logger.error("Invalid Key Exception was encountered in generateAttachmentSasUrl() :", e);
} catch (URISyntaxException e) {
    logger.error("Problems creating an URI was encounter in generateAttachmentSasUrl() : ", e);
}

请使用jclouds 2.0.0-SNAPSHOT进行测试。 URL编码的许多问题已作为JCLOUDS-217的一部分修复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM