如何解决如何通过HTTP从Sanity下载文件?
我想知道是否可以通过HTTP请求从Sanity下载文件?
我只有参考ID:
<a href="https://cdn.sanity.io/assets/clientID/dataset/file-xxxxxxxxxxx-xlsx">
Download File
</a>
在这种情况下,我想这样做:
{{1}}
解决方法
您确实可以?只需一点自定义代码,就可以从_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
}
您也可以对图像进行同样的操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。