如何通过 HTTP 从 Sanity 下载文件?
How to download file from Sanity via HTTP?
我想知道是否可以通过 HTTP 请求从 Sanity 下载文件?
我只有参考 ID:
{
file: {
asset: {
_ref: "file-fxxxxxxxxxxxxxxxxxxxx-xlsx"
_type: "reference"
}
}
}
我想做的是这个场景:
<a href="https://cdn.sanity.io/assets/clientID/dataset/file-xxxxxxxxxxx-xlsx">
Download File
</a>
你可以,确实可以使用一些自定义代码,你可以只从 _ref
,这是文件文档的 _id
从文件_ref
/_id
创建URL
_ref
/_id
结构是这样的:file-{ID}-{EXTENSION}
(例如:file-207fd9951e759130053d37cf0a558ffe84ddd1c9-mp3
)。
由此,您可以生成可下载的 URL,其结构如下:https://cdn.sanity.io/files/{PROJECT_ID}/{DATASET}/{ID_OF_FILE}.{EXTENSION}
。下面是操作的一些伪 Javascript 代码:
const getUrlFromId = ref => {
// Example ref: file-207fd9951e759130053d37cf0a558ffe84ddd1c9-mp3
// We don't need the first part, unless we're using the same function for files and images
const [_file, id, extension] = ref.split('-');
return `https://cdn.sanity.io/files/${PROJECT_ID}/${DATASET}/${id}.${extension}`
}
直接查询URL
但是,如果您可以使用 GROQ 查询文件的文档,那会更容易:
*[(YOUR FILTER HERE)] {
file->{ url } // gets the URL from the referenced file
}
您也可以对图像执行相同的操作。
我想知道是否可以通过 HTTP 请求从 Sanity 下载文件?
我只有参考 ID:
{
file: {
asset: {
_ref: "file-fxxxxxxxxxxxxxxxxxxxx-xlsx"
_type: "reference"
}
}
}
我想做的是这个场景:
<a href="https://cdn.sanity.io/assets/clientID/dataset/file-xxxxxxxxxxx-xlsx">
Download File
</a>
你可以,确实可以使用一些自定义代码,你可以只从 _ref
,这是文件文档的 _id
从文件_ref
/_id
创建URL
_ref
/_id
结构是这样的:file-{ID}-{EXTENSION}
(例如:file-207fd9951e759130053d37cf0a558ffe84ddd1c9-mp3
)。
由此,您可以生成可下载的 URL,其结构如下:https://cdn.sanity.io/files/{PROJECT_ID}/{DATASET}/{ID_OF_FILE}.{EXTENSION}
。下面是操作的一些伪 Javascript 代码:
const getUrlFromId = ref => {
// Example ref: file-207fd9951e759130053d37cf0a558ffe84ddd1c9-mp3
// We don't need the first part, unless we're using the same function for files and images
const [_file, id, extension] = ref.split('-');
return `https://cdn.sanity.io/files/${PROJECT_ID}/${DATASET}/${id}.${extension}`
}
直接查询URL
但是,如果您可以使用 GROQ 查询文件的文档,那会更容易:
*[(YOUR FILTER HERE)] {
file->{ url } // gets the URL from the referenced file
}
您也可以对图像执行相同的操作。