{"_id":"@cordova-ohos/cordova-plugin-file-md5","_rev":"3-94fd68b98112defc69d6537aa5200b8b","name":"@cordova-ohos/cordova-plugin-file-md5","dist-tags":{"latest":"0.3.4"},"versions":{"0.3.3":{"name":"@cordova-ohos/cordova-plugin-file-md5","version":"0.3.3","keywords":["cordova","file-md5","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-file-md5@0.3.3","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"}],"bugs":{"url":"https://gitcode.com/OpenHarmony-Cordova/cordova-plugin-file-md5/issues"},"dist":{"shasum":"3a5126b0dd31d39c2d9cc11e1460d685533c80a7","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-file-md5/-/cordova-plugin-file-md5-0.3.3.tgz","fileCount":8,"integrity":"sha512-BQ03csZ7GJ6ua8Ordc1SfUSoONFpkHZ605OyVarH3e9OErIlpURl5HaOvzZ09aBv+Sf3YWF/OhYyw1Tce7bzqQ==","signatures":[{"sig":"MEYCIQD7EzOSNmUVFPl/bVNyUsH/ZpHplAknwmeny5WNnPOBhwIhAPjCqTk9XQlE2WrxhwDm0IQe7o+heWVYrwzXxeS8gjLR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28302},"cordova":{"id":"cordova-plugin-file-md5","platforms":["ohos"]},"engines":{"cordovaDependencies":{"0.3.3":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"21d9b311c178f36a26414c2511edb7fc2e0e9aea","_npmUser":{"name":"wanpengsz","email":"wanpengsz@163.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/cordova-plugin-file-md5","type":"git"},"_npmVersion":"9.6.2","description":"Cordova file md5 Plugin","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cordova-plugin-file-md5_0.3.3_1773991182766_0.890181429972521","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@cordova-ohos/cordova-plugin-file-md5","version":"0.3.4","description":"Cordova file md5 Plugin","cordova":{"id":"cordova-plugin-file-md5","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-file-md5"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-file-md5/issues"},"keywords":["cordova","file-md5","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"0.3.4":{"@cordova-ohos/ohos":">=2.0.0","hcordova":">=1.0.0"}}},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-file-md5@0.3.4","gitHead":"c308f3ba09d76ce1c2400d7421b1c0bb774ad84d","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-rBo7P02uQcTqPre+qzm83EZ/REIhH9rORjny5QYYqjXlgj4D7BnKWAFOKrd2zWu+6jLypGMiRCw5um5MrgQVNg==","shasum":"c0115ed6d37ce936965daa6115f9dc87587369c6","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-file-md5/-/cordova-plugin-file-md5-0.3.4.tgz","fileCount":9,"unpackedSize":54420,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCqvHXb+vvkBPqQL4AxjT1GGKK67X+cEAXLFFJOUXHhbAIgH3CGg0Q6u87Hlj+AR5B56Yh+Zq4x6xUnX1OyfF+LNSQ="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cordova-plugin-file-md5_0.3.4_1785154691762_0.18543445508200795"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-20T07:19:42.644Z","modified":"2026-07-27T12:18:12.136Z","0.3.3":"2026-03-20T07:19:42.913Z","0.3.4":"2026-07-27T12:18:11.915Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-file-md5/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","file-md5","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-file-md5"},"description":"Cordova file md5 Plugin","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"readme":"# <center>cordova-plugin-file-md5</center>\r\n\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [cordova-plugin-file-md5@0.3.3](https://www.npmjs.com/package/cordova-plugin-file-md5/v/0.3.3) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [cordova-plugin-file-md5](#cordova-plugin-file-md5)\r\n  - [简介](#简介)\r\n  - [支持平台](#支持平台)\r\n  - [下载安装](#下载安装)\r\n    - [从 npm 安装（推荐）](#从-npm-安装推荐)\r\n    - [指定平台安装 ohos](#指定平台安装-ohos)\r\n    - [从 GitCode 仓库安装](#从-gitcode-仓库安装)\r\n    - [离线安装（本地包）](#离线安装本地包)\r\n    - [安装后验证](#安装后验证)\r\n    - [卸载](#卸载)\r\n  - [约束与限制](#约束与限制)\r\n    - [兼容性](#兼容性)\r\n  - [使用示例](#使用示例)\r\n    - [示例 1：基础使用（本地文件 MD5 计算）](#示例-1基础使用本地文件-md5-计算)\r\n    - [示例 2：完整流程（远程文件下载 + MD5 计算）](#示例-2完整流程远程文件下载--md5-计算)\r\n  - [使用说明](#使用说明)\r\n    - [核心 API 说明](#核心-api-说明)\r\n      - [方法签名](#方法签名)\r\n      - [参数说明](#参数说明)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n\r\n## 简介\r\n\r\ncordova-plugin-file-md5 是一款轻量、高效的文件 MD5 计算插件，基于各平台原生 API 实现，规避纯前端计算的性能瓶颈，支持本地文件、assets 目录文件及远程文件（下载后计算）的 MD5 哈希值计算，具备计算速度快、内存占用低、跨平台兼容等特点。可广泛应用于文件完整性校验、文件唯一标识生成、断点续传校验、缓存文件管理等场景。核心功能包括：\r\n\r\n- 调用原生 API 计算文件 MD5，性能优于前端计算\r\n\r\n- 支持本地沙盒文件、外部存储文件、assets 目录文件的 MD5 计算\r\n\r\n- 支持远程文件下载后计算 MD5，适配各类网络文件场景\r\n\r\n- 可配置进度回调，实时反馈 MD5 计算进度\r\n\r\n- 提供清晰的错误信息，便于调试与问题定位\r\n\r\n## 支持平台\r\n\r\n- **Android**：API 19 及以上（Android 4.4+）\r\n\r\n- **iOS**：10.0 及以上\r\n\r\n- **OHOS**：5.0+\r\n\r\n## 下载安装\r\n\r\n通过 hcordova CLI 即可快速安装插件，支持从 npm 仓库或 GitCode 仓库获取。\r\n\r\n### 从 npm 安装（推荐）\r\n\r\n```bash\r\n# 使用 hcordova CLI 安装\r\n# 安装 hcordova 命令化工具\r\nnpm install -g hcordova\r\n\r\n# 全平台安装插件\r\nhcordova plugin add cordova-plugin-file-md5\r\n\r\n```\r\n\r\n### 指定平台安装 ohos\r\n\r\n仅为 OHOS 平台安装插件：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\nhcordova plugin add cordova-plugin-file-md5 --platform ohos\r\n\r\n```\r\n\r\n### 从 GitCode 仓库安装\r\n\r\n仅为 OHOS 平台安装插件：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\n# 默认分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-file-md5.git --platform ohos\r\n\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-file-md5.git@develop --platform ohos\r\n\r\n```\r\n\r\n\r\n### 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：~/Downloads/cordova-plugin-file-md5）\r\n# 执行离线安装\r\nhcordova plugin add ~/Downloads/cordova-plugin-file-md5 --platform ohos\r\n```\r\n\r\n### 安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否成功添加到项目中：\r\n\r\n```bash\r\n# 查看已安装的插件列表，若包含本插件 ID 则表示插件已成功安装\r\nhcordova plugin list\r\n```\r\n\r\n### 卸载\r\n\r\n```bash\r\n# Cordova CLI 全平台卸载\r\nhcordova plugin remove cordova-plugin-file-md5 \r\n\r\n# 指定平台卸载\r\nhcordova plugin remove cordova-plugin-file-md5 --platform ohos\r\n\r\n```\r\n\r\n## 约束与限制\r\n\r\n- 依赖插件：依赖 cordova-plugin-file 插件（安装时会自动依赖，无需手动安装）\r\n\r\n- 调用时机：所有 API 需在 `deviceready` 事件触发后调用，避免原生接口未初始化导致报错\r\n\r\n- 文件权限：OHOS 沙盒文件计算无需额外申请权限\r\n\r\n- 文件大小：支持大文件 MD5 计算，建议对超过 100MB 的文件启用进度回调，提升用户体验\r\n\r\n- 远程文件：计算远程文件 MD5 时，需确保网络通畅，且文件可正常下载（无跨域、权限限制）\r\n\r\n### 兼容性\r\n\r\n支持：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| SDK | API12+ |\r\n| IDE | DevEco Studio 5.0+ |\r\n| ROM | 5.1+ |\r\n| Emulator | OpenHarmony 6.0+ |\r\n\r\n在以下版本中已测试通过：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| @cordova-ohos/ohos | 14.0.1-ohos-14.0.1 |\r\n| SDK | 5.0.0(12) |\r\n| IDE | DevEco Studio 6.0.13.200 |\r\n| ROM | 5.1.0.120 SP3 |\r\n| Emulator | OpenHarmony 6.0.1(21) |\r\n\r\n## 使用示例\r\n\r\n以下提供两种常用场景的使用示例，适配 OHOS 平台，可直接复制到项目中调试使用，所有示例均需在 `deviceready` 事件触发后执行。\r\n\r\n### 示例 1：基础使用（本地文件 MD5 计算）\r\n\r\n适用于已获取本地文件 FileEntry 对象的场景，快速计算文件 MD5 值，可根据需求添加进度回调。\r\n\r\n```javascript\r\n// 成功回调：获取文件 MD5 值\r\nfunction successCallback(md5sum) {\r\n    console.log(\"文件 MD5 值：\" + md5sum);\r\n}\r\n\r\n// 失败回调：输出错误信息\r\nfunction errorCallback(error) {\r\n    console.error(\"MD5 计算失败：\" + error);\r\n}\r\n\r\n// 进度回调（可选）：显示计算进度\r\nfunction progressCallback(progress) {\r\n    console.log(\"MD5 计算进度：\" + progress + \"%\");\r\n}\r\n\r\n// 假设已通过 cordova-plugin-file 获取本地文件的 FileEntry 对象（示例：本地缓存目录文件）\r\nwindow.resolveLocalFileSystemURL(\r\n    cordova.file.cacheDirectory + \"test.txt\",\r\n    function(fileEntry) {\r\n        // 调用 API 计算 MD5\r\n        md5chksum.file(fileEntry, successCallback, errorCallback, progressCallback);\r\n    },\r\n    function(error) {\r\n        console.error(\"获取本地文件失败：\" + error);\r\n    }\r\n);\r\n\r\n```\r\n\r\n### 示例 2：完整流程（远程文件下载 + MD5 计算）\r\n\r\n实现「远程文件下载 → 保存至本地缓存目录 → 计算 MD5 值」的完整业务流程，包含异常处理，可直接复用。\r\n\r\n```javascript\r\n/**\r\n * 完整流程：下载远程文件 → 保存至本地缓存目录 → 计算文件 MD5 值\r\n */\r\nfunction fileMd5() {\r\n    // 1. 写入文件（将下载的 Blob 数据写入本地文件）\r\n    function writeFile(fileEntry, dataObj, isAppend = false) {\r\n        fileEntry.createWriter(function (fileWriter) {\r\n            // 写入完成回调：开始计算 MD5\r\n            fileWriter.onwriteend = function() {\r\n                console.log(\"文件写入完成，开始计算 MD5...\");\r\n                // 调用 MD5 计算 API\r\n                md5chksum.file(\r\n                    fileEntry,\r\n                    function(md5Value) {\r\n                        // 计算成功：更新页面显示 MD5 值\r\n                        document.getElementById(\"md5Value\").innerHTML = \"文件 MD5 值：\" + md5Value;\r\n                    },\r\n                    function(errorInfo) {\r\n                        // 计算失败：显示错误信息\r\n                        document.getElementById(\"md5Value\").innerHTML = \"MD5 计算失败：\" + errorInfo;\r\n                    },\r\n                    function(progress) {\r\n                        // 进度回调：显示计算进度\r\n                        document.getElementById(\"md5Progress\").innerHTML = \"计算进度：\" + progress + \"%\";\r\n                    }\r\n                );\r\n            };\r\n\r\n            // 写入错误回调\r\n            fileWriter.onerror = function(e) {\r\n                console.error(\"文件写入失败：\" + e.toString());\r\n                document.getElementById(\"md5Value\").innerHTML = \"文件写入失败：\" + e.toString();\r\n            };\r\n\r\n            // 写入数据（若需追加内容，设置 isAppend 为 true）\r\n            if (isAppend) {\r\n                fileWriter.seek(fileWriter.length); // 定位到文件末尾\r\n            }\r\n            fileWriter.write(dataObj);\r\n        });\r\n    }\r\n\r\n    // 2. 保存文件到指定目录\r\n    function saveFile(dirEntry, fileData, fileName) {\r\n        // 创建/获取文件（create: true 表示不存在则创建）\r\n        dirEntry.getFile(\r\n            fileName,\r\n            { create: true, exclusive: false },\r\n            function (fileEntry) {\r\n                writeFile(fileEntry, fileData); // 调用写入文件方法\r\n            },\r\n            function(error) {\r\n                console.error(\"获取文件失败：\" + error);\r\n                document.getElementById(\"md5Value\").innerHTML = \"获取文件失败：\" + error;\r\n            }\r\n        );\r\n    }\r\n\r\n    // 3. 下载远程文件（以 Cordova 官方图片为例，可替换为自定义文件地址）\r\n    function getSampleFile(dirEntry) {\r\n        var xhr = new XMLHttpRequest();\r\n        xhr.open('GET', 'https://cordova.apache.org/static/img/cordova_bot.png', true);\r\n        xhr.responseType = 'blob'; // 以 Blob 格式获取文件数据\r\n\r\n        // 下载成功回调\r\n        xhr.onload = function() {\r\n            if (this.status == 200) {\r\n                var blob = new Blob([this.response], { type: 'image/png' });\r\n                // 保存文件到指定目录，文件名为 downloadedImage.png\r\n                saveFile(dirEntry, blob, \"downloadedImage.png\");\r\n            } else {\r\n                console.error(\"文件下载失败，状态码：\" + this.status);\r\n                document.getElementById(\"md5Value\").innerHTML = \"文件下载失败，状态码：\" + this.status;\r\n            }\r\n        };\r\n\r\n        // 下载错误回调\r\n        xhr.onerror = function() {\r\n            console.error(\"文件下载失败：网络错误\");\r\n            document.getElementById(\"md5Value\").innerHTML = \"文件下载失败：网络错误\";\r\n        };\r\n\r\n        xhr.send(); // 发起下载请求\r\n    }\r\n\r\n    // 4. 初始化：获取本地缓存目录，创建子目录用于保存下载文件\r\n    window.resolveLocalFileSystemURL(\r\n        cordova.file.cacheDirectory,\r\n        function(dirEntry) {\r\n            // 显示下载中提示\r\n            document.getElementById(\"md5Value\").innerHTML = \"正在下载文件...\";\r\n            document.getElementById(\"md5Progress\").innerHTML = \"下载进度：0%\";\r\n            // 创建子目录（magongshou/import），用于保存下载的文件\r\n            dirEntry.getDirectory(\r\n                \"magongshou/import\",\r\n                { create: true }, // 不存在则创建\r\n                function (dir) {\r\n                    getSampleFile(dir); // 开始下载文件\r\n                },\r\n                function(error) {\r\n                    console.error(\"创建目录失败：\" + error);\r\n                    document.getElementById(\"md5Value\").innerHTML = \"创建目录失败：\" + error;\r\n                }\r\n            );\r\n        },\r\n        function(error) {\r\n            console.error(\"获取缓存目录失败：\" + error);\r\n            document.getElementById(\"md5Value\").innerHTML = \"获取缓存目录失败：\" + error;\r\n        }\r\n    );\r\n}\r\n\r\n// 调用方法，触发完整流程（需在 deviceready 事件后调用）\r\ndocument.addEventListener(\"deviceready\", function() {\r\n    fileMd5();\r\n}, false);\r\n\r\n```\r\n\r\n## 使用说明\r\n\r\n本插件核心功能为计算文件 MD5 哈希值，支持本地文件、远程下载文件（需先下载至本地），所有操作需在 `deviceready` 事件触发后执行，核心 API 及参数说明如下。\r\n\r\n### 核心 API 说明\r\n\r\n插件唯一核心 API 为 `md5chksum.file()`，用于计算指定文件的 MD5 值，提供成功、失败及进度回调，满足不同场景下的使用需求。\r\n\r\n#### 方法签名\r\n\r\n```javascript\r\nmd5chksum.file(fileEntry, successCallback, errorCallback, progressCallback);\r\n\r\n```\r\n\r\n#### 参数说明\r\n\r\n| **参数名** | **类型** | **说明** |\r\n|---|---|---|\r\n| fileEntry | FileEntry | 必填，要计算 MD5 的文件对象，可通过 cordova-plugin-file 插件获取 |\r\n| successCallback | Function | 必填，计算成功回调，参数为 md5sum（字符串类型，文件的 MD5 哈希值） |\r\n| errorCallback | Function | 必填，计算失败回调，参数为 error（字符串类型，错误信息） |\r\n| progressCallback | Function | 可选，进度回调，参数为 progress（数字类型，0-100，代表计算进度百分比） |\r\n\r\n## 目录结构\r\n\r\n```\r\ncordova-plugin-file-md5/\r\n├── src/                          # 源代码目录\r\n│   └── main/                     # 主要源代码\r\n│       └── cpp/                  # C++ 原生代码\r\n│           └── file/             # 文件模块\r\n│               ├── md5chksum.cpp # 文件 MD5 校验功能的 C++ 实现\r\n│               └── md5chksum.h   # 文件 MD5 校验功能的头文件\r\n├── www/                          # Web 资源目录\r\n│   └── md5chksum.js              # JavaScript 文件 MD5 校验接口（Cordova 桥接层）\r\n├── .gitignore                    # Git 忽略文件配置\r\n├── LICENSE                       # 项目开源许可证\r\n├── OAT.xml                       # OpenHarmony 审核配置文件\r\n├── package.json                  # Node.js 包配置\r\n├── plugin.xml                    # Cordova 插件描述文件（核心配置）\r\n└── README.md                     # 项目说明文档\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/cordova-plugin-file-md5/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/cordova-plugin-file-md5/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\n- Android 和 iOS：[cordova-plugin-file-md5 官方指南](https://www.npmjs.com/package/cordova-plugin-file-md5)\r\n\r\n- GitCode 仓库：[CPF-Cordova/cordova-plugin-file-md5](https://gitcode.com/CPF-Cordova/cordova-plugin-file-md5)\r\n","readmeFilename":"README.md"}