Skip to content
This repository was archived by the owner on Feb 12, 2024. It is now read-only.

Commit ef0ba50

Browse files
ya7yadaviddias
authored andcommitted
docs: fix example #952 adding +50Mb files via createAddStream (#983)
1 parent bc305c1 commit ef0ba50

File tree

3 files changed

+78
-14
lines changed

3 files changed

+78
-14
lines changed

examples/exchange-files-in-browser/package.json

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,16 @@
22
"name": "exchange-files-browser",
33
"version": "0.0.0",
44
"scripts": {
5-
"start": "http-server -c-1 -p 12345 public"
5+
"bundle": "browserify public/js/app.js > public/js/bundle.js",
6+
"serve": "http-server -c-1 -p 12345 public",
7+
"start": "npm run bundle && npm run serve"
68
},
79
"license": "MIT",
810
"devDependencies": {
11+
"browserify": "^14.4.0",
912
"http-server": "^0.10.0"
13+
},
14+
"dependencies": {
15+
"stream-buffers": "^3.0.1"
1016
}
1117
}

examples/exchange-files-in-browser/public/index.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ <h2>Peers</h2>
6363

6464
<!-- The IPFS node module -->
6565
<script src="//unpkg.com/ipfs/dist/index.min.js"></script>
66-
<script src="js/app.js"></script>
66+
<!-- <script src="js/app.js"></script> -->
67+
<script src="js/bundle.js"></script>
6768
</body>
6869
</html>

examples/exchange-files-in-browser/public/js/app.js

+69-12
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const $details = document.querySelector('#details')
2020
const $allDisabledButtons = document.querySelectorAll('button:disabled')
2121
const $allDisabledInputs = document.querySelectorAll('input:disabled')
2222
const $filesList = document.querySelector('.file-list')
23+
const streamBuffers = require('stream-buffers')
2324

2425
let node
2526
let peerInfo
@@ -137,16 +138,71 @@ function onDrop (event) {
137138
filesArray.map((file) => {
138139
readFileContents(file)
139140
.then((buffer) => {
140-
return node.files.add([{
141-
path: file.name,
142-
content: new node.types.Buffer(buffer)
143-
}])
141+
let fileSize = buffer.byteLength
142+
143+
if (fileSize < 50000000) {
144+
return node.files.add([{
145+
path: file.name,
146+
content: new node.types.Buffer(buffer)
147+
}])
148+
} else {
149+
// use createAddStream and chunk the file.
150+
let progress = 0
151+
152+
let myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
153+
// frequency: 10, // in milliseconds.
154+
chunkSize: 32048 // in bytes.
155+
})
156+
157+
node.files.createAddStream((err, stream) => {
158+
if (err) throw err
159+
160+
stream.on('data', (file) => {
161+
$multihashInput.value = file.hash
162+
$filesStatus.innerHTML = `Added ${file.path} as ${file.hash}`
163+
164+
if (progressbar) {
165+
clearInterval(progressbar)
166+
progress = 0
167+
}
168+
})
169+
170+
myReadableStreamBuffer.on('data', (chunk) => {
171+
progress += chunk.byteLength
172+
})
173+
174+
if (!myReadableStreamBuffer.destroy) {
175+
myReadableStreamBuffer.destroy = () => {}
176+
}
177+
178+
stream.write({
179+
path: file.name,
180+
content: myReadableStreamBuffer
181+
})
182+
183+
myReadableStreamBuffer.put(Buffer.from(buffer))
184+
myReadableStreamBuffer.stop()
185+
186+
myReadableStreamBuffer.on('end', () => {
187+
stream.end()
188+
})
189+
190+
myReadableStreamBuffer.resume()
191+
192+
// progress.
193+
let progressbar = setInterval(() => {
194+
console.log('progress: ', progress, '/', fileSize, ' = ', Math.floor((progress / fileSize) * 100), '%')
195+
}, 5000)
196+
})
197+
}
144198
})
145199
.then((files) => {
146-
$multihashInput.value = files[0].hash
147-
$filesStatus.innerHTML = files
200+
if (files && files.length) {
201+
$multihashInput.value = files[0].hash
202+
$filesStatus.innerHTML = files
148203
.map((e) => `Added ${e.path} as ${e.hash}`)
149204
.join('<br>')
205+
}
150206
})
151207
.catch(onError)
152208
})
@@ -178,14 +234,15 @@ function refreshPeerList () {
178234
if (err) {
179235
return onError(err)
180236
}
181-
182237
const peersAsHtml = peers
183238
.map((peer) => {
184-
const addr = peer.addr.toString()
185-
if (addr.indexOf('ipfs') >= 0) {
186-
return addr
187-
} else {
188-
return addr + peer.peer.id.toB58String()
239+
if (peer.addr) {
240+
const addr = peer.addr.toString()
241+
if (addr.indexOf('ipfs') >= 0) {
242+
return addr
243+
} else {
244+
return addr + peer.peer.id.toB58String()
245+
}
189246
}
190247
})
191248
.map((addr) => {

0 commit comments

Comments
 (0)