我用ipfs下载文件..。但是ipfs没有文件名或扩展名。
如何根据下载的数据正确设置保存文件的扩展名?
发布于 2022-06-15 14:47:40
您可以添加带有ipfs add -w
的文件,以便将它们“包装”到目录中。这将保留文件名。
也有计划记录元数据,如mime类型和文件,但不幸的是,这方面的进展已经有点停滞。
发布于 2022-06-10 00:59:51
无法确定地在IPFS中获得文件扩展名,因此可以查看文件的内容来推断其文件类型(例如,使用file-type
)。
当缓冲区中有文件的全部内容时,可以这样做:
import {fileTypeFromBuffer} from 'file-type';
let buffer = /* buffer of file from IPFS */;
// undefined or string of file extension
let ext = (await fileTypeFromBuffer(buffer))?.ext;
发布于 2022-06-11 01:10:04
如果您不想在前面的React
应用程序中这样做,这是可行的:
let contentType = await fetch(imageUrl)
.then(response => {
return response.blob().then(blob => {
return {
contentType: response.headers.get("Content-Type"),
raw: blob
}
})
})
.then(data => {
return data.contentType
})
file-type
的目的是用于Node
应用程序,而不是客户端。
如果您尝试使用一个用于Node
的库,那么您将得到与库对内置Node
模块的内部依赖相关的错误,这些错误在浏览器中是不可用的。您应该使用不同的库从浏览器发出HTTP请求;我建议使用浏览器的内置fetch
。
https://stackoverflow.com/questions/70441454
复制相似问题