I.U*_*.U. 11 git github git-lfs
我使用 Git LFS(大文件存储)将一个大文件上传到 gitub。
起初我可以从直接链接下载文件。
raw.githubusercontent.com/userName/reposiotry/master/file.mp4
Run Code Online (Sandbox Code Playgroud)
但是第二天文件开始包含一个文本值
oid sha256:59f24bc922e1a48bb3feeba18b23f0e9622a7ee07166d925650d7a933283f8b1 尺寸 123882252
我如何下载这个文件?如何获得它的直接链接?
假设 ServerAddress 例如https://api.github.com:
ServerAddress + '/repos/RepoName/git/blobs/FileHash'version https://git-lfs.github.com/spec/v1
oid sha256:59f24bc922e1a48bb3feeba18b23f0e9622a7ee07166d925650d7a933283f8b1
size 123882252
Run Code Online (Sandbox Code Playgroud)
ServerAddress + '/repos/RepoName/contents'{
"name": "filename.ext",
"path": "path/filename.ext",
"sha": "FileHash",
"size": 42,
"url": "https://api.github.com/repos/RepoName/contents/path/filename.ext?ref=master",
"html_url": "...",
"git_url": "...",
"download_url": "...",
"type": "file",
"_links": { ... }
}
Run Code Online (Sandbox Code Playgroud)
url值并获取它,{
"name": "filename.ext",
"path": "path/filename.ext",
"sha": "FileHash",
"size": 720896,
"url": "...",
"html_url": "...",
"git_url": "...",
"download_url": "https://media.githubusercontent.com/media/RepoName/RepoHash/path/filename.ext?token=...",
"type": "file",
"content": "...", // same as response from pt. 1
"encoding": "base64",
"_links": { ... }
}
Run Code Online (Sandbox Code Playgroud)
download_url值并获取它,BINARY文件内容。您需要进入网络界面并找到文件的原始链接并使用它。
当您使用 Git LFS 时,实际存储在存储库中的文件是一个指针文件,就像您在上面看到的那样。GitHub 有不同的 URL 来提供存储库内容和 Git LFS 文件的原始内容,因此如果您想获取 Git LFS 内容,则需要使用适当的链接。如果您之前将该文件作为非 LFS 文件,那么当您再次将其作为 LFS 文件上传时,URL 将发生更改。
请注意,不鼓励在网页中使用这些 URL 或以其他方式使用这些直接链接作为 CDN 形式。