@zyss/file-md5
TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published

计算文件MD5,优先使用wasm,不支持wasm会降级成js

import './App.css';
import { fileMd5 } from '@zyss/file-md5';
const App = () => {
  return (
    <div className="content">
      <input
        type="file"
        onChange={(e) => {
          const file = e.target!.files![0];
          console.time('md5');
          fileMd5(file).then((result) => {
            console.log(result);
            console.timeEnd('md5');
          });
        }}
      />
    </div>
  );
};

export default App;

使用worker

// md5.worker.ts
import { fileMd5 } from '@zyss/file-md5';

self.addEventListener('message', async (event: MessageEvent<File>) => {
  const file = event.data;
  if (!file) {
    return;
  }
  try {
    const result = await fileMd5(file);
    self.postMessage({ type: 'md5Result', payload: result });
  } catch (error) {
    self.postMessage({ type: 'md5Error', payload: error });
  }
});
// App.tsx
import './App.css';
const App = () => {
  return (
    <div className="content">
      <input
        type="file"
        onChange={(e) => {
          const file = e.target!.files![0];
          const worker = new Worker(new URL('./md5.worker.ts', import.meta.url));
          worker.onmessage = (e) => {
            console.log("Received message", e.data)
          }
          worker.postMessage(file)
        }}
      />
      <button
        onClick={() => {
          console.log('测试 worker');
        }}
      >
        b
      </button>
    </div>
  );
};

export default App;

Readme

Keywords

none

Package Sidebar

Install

npm i @zyss/file-md5

Weekly Downloads

0

Version

1.0.4

License

none

Unpacked Size

18.7 kB

Total Files

10

Last publish

Collaborators

  • jackcancal