我正在尝试使用IPFS Api使用HTML库提交文件。为此,在将文件添加到IPFS之前,我需要缓冲输入。
我的问题是,我已经尝试过互联网上遇到的每个选项,以解决错误“ Uncaught ReferenceError:未定义缓冲区”。我已经重新安装了npm,Node,并没有成功使用browserify。
因此,我要做的是安装“ npm install buffer”并转到index.js所在的文件夹,并使用browserify尝试创建独立的buffer.js文件。
browserify index.js -o buffer.js
我试图将buffer.js文件包括在HTML文件的顶部,并且将错误更改为“未定义要求”。
这是我的HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>JavaScript file upload</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script src="./buffer.js"></script>
<script src="https://unpkg.com/ipfs-api@9.0.0/dist/index.js"
integrity="sha384-5bXRcW9kyxxnSMbOoHzraqa7Z0PQWIao+cgeg327zit1hz5LZCEbIMx/LWKPReuB"
crossorigin="anonymous"></script>
</head>
<script type="text/javascript">
function upload() {
const reader = new FileReader();
const buf = require('buffer');
reader.onloadend = function() {
const ipfs = window.IpfsApi('localhost', 5001) // Connect to IPFS
buf = buffer.Buffer(reader.result) // Convert data into buffer
ipfs.files.add(buf, (err, result) => { // Upload buffer to IPFS
if(err) {
console.error(err)
return
}
let url = `https://127.0.0.1:5001/ipfs/${result[0].hash}`
console.log(`Url --> ${url}`)
document.getElementById("url").innerHTML= url
document.getElementById("url").href= url
document.getElementById("output").src = url
})
}
const photo = document.getElementById("photo");
reader.readAsArrayBuffer(photo.files[0]); // Read Provided File
}
</script>
<body>
<form action="/">
<fieldset>
<legend>Upload photo</legend>
<input type="file" name="photo" id="photo">
<button type="button" onclick="upload()">Upload</button>
</fieldset>
</form>
</br>
</br>
<a id="url"></a>
</br>
</br>
<img id="output">
</body>
</html>
这是我的项目当前的样子:
如何通过识别本地HTML文件的“缓冲区”以将文件上传到Windows 10中的IPFS来使上述代码正常工作?