Skip to content

Commit 4c8e478

Browse files
committed
feat: handle mediaSegmentation, define path
1 parent 7cc52f9 commit 4c8e478

File tree

3 files changed

+89
-22
lines changed

3 files changed

+89
-22
lines changed

demo/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</form>
1919

2020
<form>
21-
<input type="file" />
21+
<input type="file" path="/assets/test" />
2222
<button actions="upload">upload</button>
2323
</form>
2424

demo/video-segmenting.html

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<title>Video Segmenting | CoCreateJS</title>
5+
6+
<!-- CoCreate Favicon -->
7+
<link
8+
rel="icon"
9+
type="image/png"
10+
sizes="32x32"
11+
href="../assets/favicon.ico" />
12+
<link rel="manifest" href="/manifest.webmanifest" />
13+
</head>
14+
<body>
15+
<input id="fileInput" type="file" accept="video/mp4" />
16+
17+
<script src="./video-segmenting.js"></script>
18+
<!-- <script src="../dist/CoCreate-file.js"></script> -->
19+
<!-- <script src="../../../CoCreateJS/dist/CoCreate.js"></script> -->
20+
<!-- <script src="https://CoCreate.app/dist/CoCreate.js"></script> -->
21+
</body>
22+
</html>

src/client.js

Lines changed: 66 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -424,35 +424,80 @@ async function upload(element, data) {
424424

425425
for (let input of inputs) {
426426
let Data = Elements.getObject(input);
427-
if (Data.type) {
428-
if (input.getFilter)
429-
Data.$filter = await input.getFilter()
427+
let key = getAttribute('key')
428+
if (Data.type === 'key')
429+
Data.type = 'object'
430430

431-
let files = await getFiles(input)
431+
Data.method = Data.type + '.update'
432+
if (Data.array)
433+
Data.array = 'files'
432434

433-
let key = getAttribute('key')
434-
if (Data.type === 'key')
435-
Data.type = 'object'
435+
let path = input.getAttribute('path')
436+
let directory = '/'
437+
438+
if (path) {
439+
directory = path.split('/');
440+
directory = directory[directory.length - 1];
441+
if (!path.endswith('/'))
442+
path += '/'
443+
} else
444+
path = directory = '/'
436445

437-
let object = input.getAttribute('object')
438-
if (key) {
439-
Data[Data.type] = { _id: object, [key]: files }
440-
} else {
441-
Data[Data.type] = files
446+
if (input.getFilter) {
447+
Data.$filter = await input.getFilter()
448+
if (!Data.$filter.query)
449+
Data.$filter.query = {}
450+
} else
451+
Data.$filter = {
452+
query: {}
442453
}
443454

444-
Data.method = Data.type + '.update'
445-
let response = await Crud.send(Data)({
446-
array,
447-
object,
448-
upsert: true
449-
});
450455

451-
data.push(response)
452-
if (response && (!object || object !== response.object)) {
453-
Elements.setTypeValue(element, response);
456+
let files = await getFiles(input)
457+
let segmentSize = 10 * 1024 * 1024
458+
for (let i = 0; i < files.length; i++) {
459+
files[i].path = path
460+
files[i].pathname = path + '/' + files[i].name
461+
files[i].directory = directory
462+
463+
464+
if (files[i].size > segmentSize) {
465+
let { streamConfig, segments } = await processFile(files[i], null, segmentSize);
466+
files[i].src = streamConfig
467+
for (let j = 0; j < segments.length; j++) {
468+
segments[j].path = path
469+
segments[j].pathname = path + '/' + segments[j].name
470+
segments[j].directory = directory
471+
472+
Data.$filter.query.pathname = segments[j].pathname
473+
Crud.send({
474+
...Data,
475+
object: segments[j],
476+
upsert: true
477+
});
478+
}
479+
454480
}
455481
}
482+
483+
let object = input.getAttribute('object')
484+
if (key) {
485+
Data[Data.type] = { _id: object, [key]: files }
486+
} else {
487+
Data[Data.type] = files
488+
}
489+
490+
// Data.$filter.query.pathname = files[i].pathname
491+
492+
let response = await Crud.send({
493+
...Data,
494+
upsert: true
495+
});
496+
497+
data.push(response)
498+
if (response && (!object || object !== response.object)) {
499+
Elements.setTypeValue(element, response);
500+
}
456501
}
457502

458503
let queriedElements = queryElements({ element: element[i], prefix: 'upload' })

0 commit comments

Comments
 (0)