MCPcopy Create free account
hub / github.com/MCSManager/MCSManager / fileSum

Function fileSum

frontend/src/tools/fileSum.ts:3–48  ·  view source on GitHub ↗
(file: File)

Source from the content-addressed store, hash-verified

1import SparkMD5 from "spark-md5";
2
3export default function fileSum(file: File) {
4 const spark = new SparkMD5.ArrayBuffer();
5 const fileReader = new FileReader();
6
7 if (file.size === 0) {
8 return Promise.reject(new Error("File is empty!"));
9 }
10
11 return new Promise<string>((resolve, reject) => {
12 fileReader.onload = (e: Event) => {
13 try {
14 const target = e.target as FileReader;
15 if (!target.result) {
16 return reject(new Error("FileReader result is null or undefined"));
17 }
18 const buf = target.result as ArrayBuffer;
19 if (!buf || buf.byteLength === 0) {
20 return reject(new Error("File is empty or could not be read"));
21 }
22 const chunkHead = buf.slice(0, 512);
23 const chunkTail = buf.slice(-512);
24 spark.append(chunkHead);
25 spark.append(chunkTail);
26 resolve(spark.end());
27 } catch (err) {
28 return reject(new Error(`FileReader onload error: ${err}`));
29 }
30 };
31
32 fileReader.onerror = (event: Event) => {
33 const target = event.target as FileReader;
34 const error = target.error;
35 if (error) {
36 reject(new Error(`FileReader error: ${error.name} - ${error.message}`));
37 } else {
38 reject(new Error("FileReader encountered an unknown error"));
39 }
40 };
41
42 fileReader.onabort = () => {
43 reject(new Error("File reading was aborted"));
44 };
45
46 fileReader.readAsArrayBuffer(file);
47 });
48}

Callers

nothing calls this directly

Calls 1

appendMethod · 0.45

Tested by

no test coverage detected