利用jsDelivr和Github来建立一个简单的网盘,写个html上传下载例子
时间: 2024-05-02 18:22:19 浏览: 38
我们可以使用Github来存储文件,然后使用jsDelivr作为CDN来提供访问。
首先,我们在Github上创建一个新的仓库,然后将我们要分享的文件上传到该仓库。
接下来,我们可以使用以下链接来访问我们的文件:
```
https://cdn.jsdelivr.net/gh/用户名/仓库名/文件路径
```
其中,用户名是你的Github用户名,仓库名是你创建的仓库名,文件路径是你上传的文件在仓库中的路径。
例如,如果我们上传了一个名为“example.txt”的文件到名为“myfiles”的仓库中,我们可以使用以下链接来访问它:
```
https://cdn.jsdelivr.net/gh/用户名/myfiles/example.txt
```
现在,我们可以使用以下HTML代码来创建一个简单的上传和下载页面:
```html
<!DOCTYPE html>
<html>
<head>
<title>网盘</title>
</head>
<body>
<h1>网盘</h1>
<h2>上传文件</h2>
<form>
<input type="file" name="file">
<button type="submit">上传</button>
</form>
<h2>下载文件</h2>
<ul id="fileList"></ul>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
// 获取文件列表
axios.get('https://api.github.com/repos/用户名/仓库名/contents/')
.then(function(response) {
for (var i = 0; i < response.data.length; i++) {
var file = response.data[i];
if (file.type === 'file') {
var li = document.createElement('li');
var link = document.createElement('a');
link.href = 'https://cdn.jsdelivr.net/gh/用户名/仓库名/' + file.path;
link.innerText = file.name;
li.appendChild(link);
document.getElementById('fileList').appendChild(li);
}
}
})
.catch(function(error) {
console.error(error);
});
// 上传文件
document.querySelector('form').addEventListener('submit', function(event) {
event.preventDefault();
var file = event.target.file.files[0];
var formData = new FormData();
formData.append('file', file);
axios.post('https://api.github.com/repos/用户名/仓库名/contents/' + file.name, {
content: '',
message: '上传文件:' + file.name,
branch: 'main'
}, {
headers: {
'Authorization': 'token 你的Github token'
},
data: formData
})
.then(function(response) {
alert('上传成功');
location.reload();
})
.catch(function(error) {
console.error(error);
alert('上传失败');
});
});
</script>
</body>
</html>
```
注意,你需要将上面的代码中的“用户名”、“仓库名”和“你的Github token”替换为你自己的信息。
现在,你就可以使用这个页面来上传和下载文件了。当你上传文件时,它将被存储在Github仓库中,并通过jsDelivr CDN提供访问。当你访问页面时,它将列出所有可下载的文件,并提供下载链接。
阅读全文