前言
在一个下载的业务中,需要获取到直链文件的md5,如何实现呢?
可以使用php接口,来解析蓝奏云直链。将直链返回给脚本。
脚本得到地址后,下载直链文件。
在 PHP 中,要获取远程文件的 MD5 值,可以通过以下两种主要方法来实现:
1、使用 file_get_contents
获取文件内容,然后计算 MD5 值。
2.使用 fopen
和 md5_file
函数直接计算远程文件的 MD5 值。
方法 1: 使用 file_get_contents
和 md5
<?php
// 远程文件的 URL
$url = "http://example.com/file.txt";
// 使用 file_get_contents 获取远程文件内容
$fileContents = file_get_contents($url);
// 检查文件内容是否成功获取
if ($fileContents === false) {
echo "无法获取远程文件内容";
} else {
// 计算文件的 MD5 值
$md5Hash = md5($fileContents);
echo "远程文件的 MD5 值是: " . $md5Hash;
}
?>
实际使用的例子:
方法 2: 使用 fopen
和 md5_file
直接计算 MD5(适用于大文件)
<?php
// 远程文件的 URL
$url = "http://example.com/file.txt";
// 使用 fopen 打开远程文件流
$handle = fopen($url, "r");
if ($handle === false) {
echo "无法打开远程文件";
} else {
// 计算远程文件的 MD5 值
$md5Hash = md5_file($url); // 直接对远程文件进行 MD5 计算
echo "远程文件的 MD5 值是: " . $md5Hash;
fclose($handle);
}
?>
解释:
- 方法 1 (
file_get_contents
):file_get_contents
函数会将整个文件的内容读取到内存中,因此适合处理文件大小较小的情况。然后我们使用md5()
函数来计算文件内容的 MD5 值。 - 方法 2 (
fopen
和md5_file
):md5_file
函数直接计算文件的 MD5 值,可以通过提供文件的 URL 来计算远程文件的 MD5。该方法通常适用于大文件,它避免了将整个文件内容加载到内存中。
注意:
- 计算远程文件的 MD5 值时,确保 PHP 配置中允许访问外部 URL(即
allow_url_fopen
设置为On
)。 - 对于大文件,
file_get_contents
可能会占用较多内存,因此在这种情况下建议使用fopen
和流式处理。
通过这两种方法,你可以灵活地获取远程文件的 MD5 值。
接口测试
懒人精灵调用
文件下载:
local progress = function(pos)
toast('下载进度:' .. pos .. '%')
print('下载进度:' .. pos)
end
local shareLink = 'https://feiyunjs.lanzouq.com/xxx'
local fileUrl, fileName, fileSize, fileDescription = getLanZouYunLink(shareLink)
if fileUrl ~= nil then
print('下载地址:', fileUrl)
local savepath = '/sdcard/plugins/'
if not fileExist(savepath) and mkdir(savepath) then
print('创建目录成功')
end
if downloadFile(fileUrl, savepath .. fileName, progress) ~= 0 then
print('下载失败')
delfile(savepath .. fileName)
else
print('下载成功')
end
end
根据cpu架构下载:
local opPluginList = {
{
type = 0,
fileName = 'x86.apk',
lanZouYunLink = 'https://feiyunjs.lanzouq.com/xxx1'
},
{
type = 1,
fileName = 'armeabi-v7a.apk',
lanZouYunLink = 'https://feiyunjs.lanzouq.com/xxx2'
},
{
type = 2,
fileName = 'arm64-v8a.apk',
lanZouYunLink = 'https://feiyunjs.lanzouq.com/xxx3'
}
}
-- 根据CPU架构获取插件名称
local plugName, lanZouYunLink = getPlugInfo(opPluginList)
local openCvPluginPath = '/sdcard/plugins/openCv/'
if fileExist(openCvPluginPath .. plugName) then
print('插件已存在')
else
-- 获取蓝奏云直链
local fileUrl, fileName, fileSize, fileDescription = http.getLanZouYunLink(lanZouYunLink)
if http.downloadFile(fileUrl, openCvPluginPath, fileName, progress) then
print('插件下载成功')
else
print('插件下载失败')
return
end
end
懒人精灵系列合集
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】使用php获取远程文件的md5,蓝奏云直链解析
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】使用php获取远程文件的md5,蓝奏云直链解析