我试图上传一个文件到路径,使用Azure Python SDK的ShareDirectoryClient类。我已经在下面附上了代码和错误,我得到。
path = "users/user11/projects/assets/fbx"
directories = path.lower().strip("/").split("/")
for directory in directories:
try:
directory_client = directory_client.get_subdirectory_client(directory)
if not directory_client.exists():
directory_client.create_directory()
except Exception as e:
print(e.args)
with directory_client.get_file_client(file_name=upload_file.name) as file_client:
file_client.upload_file(data = file_content, length=len(file_content))
print("Uploaded")
字符串
“directory_client”是ShareDirectoryClient的对象,在上面的代码片段中使用它来创建目录。面临的问题是,每个正在创建的目录我都会得到下面的异常。
('The specifed resource name contains invalid characters.\nRequestId:fc43b173-e01a-000c-1ae8-bd388a000000\nTime:2023-07-24T04:37:52.5072468Z\nErrorCode:InvalidResourceName',)
型
客户端身份验证错误
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
ErrorCode:AuthenticationFailed authenticationerrordetail:The MAC signature found in the HTTP request 'E0eObuCq+OdHAtf4qG80kb3wprxR4vwIsDpjinnVvUM=' is not the same as any computed signature. Server used following string to sign: 'PUT.......'
型
有时我甚至会收到ClientAuthenticationError。我真的不确定,是什么造成了这两种情况的问题。
任何解决方案和建议都是开放的。
谢谢你,谢谢
3条答案
按热度按时间slwdgvem1#
我在这里面临的问题是,我试图直接在文件共享内创建目录,但相反,应该有一些目录存在之前,尝试创建一个新的目录。所以,我手动添加了一个
root
文件夹内的文件共享,这解决了我的问题。希望这对任何有同样问题的人有所帮助。
to94eoyn2#
您遇到的错误似乎与身份验证和无效资源名称问题有关。让我们分解潜在的原因,并为每一个提供解决方案:
1.身份验证问题(
ClientAuthenticationError
):当验证过程有困难时,就会出现这个问题。确保已为Azure存储帐户正确安排凭据。要验证身份,您需要在创建ShareDirectoryClient
和ShareFileClient
对象时提供帐户名和帐户密钥(或SAS令牌)。以下是如何使用帐户名和密钥进行验证的示例:
字符串
1.无效资源名称问题:错误消息暗示指定的资源名称包含无效字符。在Azure文件存储中,目录和文件的命名约定有限制。确保
directory
变量不包含任何无效字符。Azure文件存储中目录和文件名的可接受字符:
此外,避免使用保留字,如“con”,“com 1”,“com 2”等。
在创建目录之前,确保
directory
变量满足这些要求。通过解决这些身份验证和资源名称问题,您的代码应按预期工作,并成功将文件上载到Azure File Share服务中的嵌套目录。
cld4siwp3#
若要使用Python SDK(Azure Storage File Share SDK)将文件上载到Azure存储文件共享中的嵌套目录,您需要执行以下步骤:
1.安装所需的库:确保您安装了
azure-storage-file-share
包。如果没有,可以使用pip安装:字符串
1.使用Azure帐户进行身份验证:您需要创建一个Azure Storage帐户并获取连接字符串或帐户密钥来验证Python脚本。
1.编写Python代码来上传文件:使用Azure Storage File Share SDK与您的Storage帐户交互并上传文件。
下面的示例代码显示了如何将文件上载到Azure存储文件共享中的嵌套目录:
型