通过 Databricks 上传到 Azure Blob 存储时设置内容类型
Set content type when uploading to Azure Blob Storage via Databricks
我正在使用 databricks
平台上传静态站点,具体使用以下命令将 html
内容推送到某个位置。
dbutils.fs.put("/mnt/$web/index.html", html, overwrite=True)
这是有效的,但 HTML 文件正在下载而不是显示。这是因为内容类型错误:Content-Type: application/octet-stream
.
有什么方法可以使用 databricks
进行设置吗?
dbutils.fs.put
使用 DBFS 上的文件并且不“了解”底层实现细节,因为您可以挂载不同的东西 - S3、ADLSv1/v2 等。更改内容类型特定于 blob 存储 API,因此您需要在 Python(对于 )或 Scala 中实现代码,该代码将使用 API 来设置内容类型对于上传的文件,或上传文件并通过 API 设置内容类型,没有 dbutils.fs.put
.
最后,这段代码对我有用。首先,我从 databricks 范围获取连接字符串为
dbutils.secrets.get(scope = "generic-scope", key = "website-key")
如果没有,请在存储帐户的容器访问密钥中查找
from azure.storage.blob import BlobServiceClient, ContentSettings
connect_str="connectionString"
blob_service_client = BlobServiceClient.from_connection_string(connect_str)
# Instantiate a ContainerClient
container_client = blob_service_client.get_container_client("$web")
# List files in blob folder
blobs_list = container_client.list_blobs()
for blob in blobs_list:
print(blob.content_settings.content_type) # application/octet-stream
blob.set_http_headers(
content_settings=ContentSettings(
content_type="text/html; charset=utf-8"
)
)
我正在使用 databricks
平台上传静态站点,具体使用以下命令将 html
内容推送到某个位置。
dbutils.fs.put("/mnt/$web/index.html", html, overwrite=True)
这是有效的,但 HTML 文件正在下载而不是显示。这是因为内容类型错误:Content-Type: application/octet-stream
.
有什么方法可以使用 databricks
进行设置吗?
dbutils.fs.put
使用 DBFS 上的文件并且不“了解”底层实现细节,因为您可以挂载不同的东西 - S3、ADLSv1/v2 等。更改内容类型特定于 blob 存储 API,因此您需要在 Python(对于 dbutils.fs.put
.
最后,这段代码对我有用。首先,我从 databricks 范围获取连接字符串为
dbutils.secrets.get(scope = "generic-scope", key = "website-key")
如果没有,请在存储帐户的容器访问密钥中查找
from azure.storage.blob import BlobServiceClient, ContentSettings
connect_str="connectionString"
blob_service_client = BlobServiceClient.from_connection_string(connect_str)
# Instantiate a ContainerClient
container_client = blob_service_client.get_container_client("$web")
# List files in blob folder
blobs_list = container_client.list_blobs()
for blob in blobs_list:
print(blob.content_settings.content_type) # application/octet-stream
blob.set_http_headers(
content_settings=ContentSettings(
content_type="text/html; charset=utf-8"
)
)