文件md5值是否正确的api接口开发

利用web.py框架,判断服务器端的某文件的md5值是否正确。返回json格式数据,代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# Author:     feng minqiang  <[email protected]>

# Maintainer:  feng minqiang  <[email protected]>

import web

import hashlib

import os,sys

#简单的测试一个字符串的MD5值

def GetStrMd5(src):

m0=hashlib.md5()

m0.update(src)

print m0.hexdigest()

#大文件的MD5值

def GetFileMd5(filename):

if not os.path.isfile(filename):

return

myhash = hashlib.md5()

f = file(filename,‘rb‘)

while True:

b = f.read(8096)

if not b :

break

myhash.update(b)

f.close()

return myhash.hexdigest()

def CalcSha1(filepath):

with open(filepath,‘rb‘) as f:

sha1obj = hashlib.sha1()

sha1obj.update(f.read())

hash = sha1obj.hexdigest()

print(hash)

return hash

def CalcMD5(filepath):

with open(filepath,‘rb‘) as f:

md5obj = hashlib.md5()

md5obj.update(f.read())

hash = md5obj.hexdigest()

#print(hash)

return hash

def diff_md5_file(filepath,md5_str):

_tmp_md5_str=CalcMD5(filepath)

if _tmp_md5_str == md5_str:

return True

else:

return False

def filelist(filepath=None,var_name=None):

_fd=open(filepath)

_buf=_fd.readlines()

_fd.close()

md5re={}

for i in _buf:

i=i.strip(‘\n‘).replace("  ",‘ ‘).split(‘ ‘)

_md5_str=i[0]

_file_name=i[1]

if var_name!=None:

_tmp_name=_file_name.split(".")[0]

if _tmp_name != var_name:

continue

_file_path=os.path.join(os.path.dirname(filepath),_file_name)

if not os.path.exists(_file_path):

md5re.update({_file_name:False})

continue

_Re=diff_md5_file(_file_path,_md5_str)

md5re.update({_file_name:_Re})

return md5re

class md5sum:

def GET(self):

data=web.input()

_version=None

_var_name=None

_len=len(data.items())

for i in data.items():

if i[0]=="PublicCloud":

_version=i[1]

if i[0]=="war":

_var_name=i[1]

if _version!=None:

_path="/opt/download/PublicCloud/web/"+_version

md5_file= _path + "/md5.txt"

if not os.path.exists(md5_file):

return None

if _var_name!=None:

return filelist(md5_file,_var_name)

return filelist(md5_file)

class index:

def GET(self):

return True

if __name__ == "__main__":

urls = (‘/md5‘,‘md5sum‘,

‘/‘,‘index‘)

app=web.application(urls, globals())

app.run()

利用spawn-fcgi 把该脚本挂在nginx下。命令如下(自己定义好自己的环境变量吧)

-d 脚本所在的目录

-s 该脚本的socket放置位置

-P 该脚本的PID文件放置位置

-- 运行的脚本(总入口)

spawn-fcgi -d $__rootdir -s $PWD/sock/$SOCKFILE -P "$PIDFILE" -- $PWD/pid/md5check.py fcgi

接口调用方法:

version   版本号

war    工程名称(对应的war包)

/md5?$domainname=$version&war=$projectname

返回具体某个war包的md5值是否正确。

/md5?$domainname=$version

返回该工程所有的包的md5值是否正确。

时间: 2024-11-09 01:43:04

文件md5值是否正确的api接口开发的相关文章

JAVA中获取文件MD5值的方法

1 DigestUtils.md5Hex(new FileInputStream(path)); 如果你只需要使用标准的MD5,其实一行代码就够了,JAVA自带的commons-codec包就提供了获取16进制MD5值的方法.其底层实现上,也是分多次将一个文件读入,类似方法三.所以性能上也不错. 总结:其实方法都是类似的,推荐使用这个方法,简洁且性能不错,当然,如果要做一些调整什么的,可以根据自己的需求进行方法的选择. PS:其实还有一个重点,就是如何知道自己生成的MD5值是否正确呢? 方法很多

QT 获取文件MD5值

[cpp] view plain copy /* 方法1 */ QFile theFile(fileNamePath); theFile.open(QIODevice::ReadOnly); QByteArray ba = QCryptographicHash::hash(theFile.readAll(), QCryptographicHash::Md5); theFile.close(); qDebug() << ba.toHex().constData(); [cpp] view pla

C#统计目录中文件MD5值

1. [代码]统计目录中文件MD5值 using System.IO;using System.Security.Cryptography;using System.Collections;using System.Windows.Forms; IDataObject iData = Clipboard.GetDataObject();   if (iData.GetDataPresent(DataFormats.Text))   {string filepath=(string)iData.G

MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; impor

API接口开发 配置、实现、测试

Yii2 基于RESTful架构的 advanced版API接口开发 配置.实现.测试 环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_rewrite.so 将其前面的#去掉,如果没有找到则添加进去. 找到一下代码 <Directory "C:/phpStudy/Apache/cgi-bin"> AllowOverride

浅谈使用 PHP 进行手机 APP 开发(API 接口开发)

做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨下,如何使用php进行手机API接口开发 一.先简单回答两个问题: 1.PHP 可以开发客户端? 答:可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:主要用于服务端的开发.但是,PHP可不仅仅只能在互联网站上发展,一个PHP for Android(PFA)站点表示

(微信API接口开发) 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理

最近调试原来的微信模拟登陆时发生了"基础连接已关闭,发送时发生错误"的错误提示,原来都是好好的,只是很久没用了. 出错代码如下: ? 1 2 3 4 5 6 7 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN");///cgi-bin/loginpage?

各操作系统取文件MD5值

redhat/centos/suse # md5sum /bin/bash c4a70cfbfc16e858a38069e72a74f39d  /bin/bash # md5sum < /bin/bash c4a70cfbfc16e858a38069e72a74f39d  - aix # csum /bin/sh fe6ffc66dca924caec57233521a48293  /bin/sh solaris # digest -a md5 /bin/bash 6a4967a62ecfcb42

文件MD5值

import org.apache.commons.codec.digest.DigestUtils /** * 获取远程url文件的MD5值 */ fun getMd5Hex(url: URL): String { var urlIS: InputStream? = null var dataInputStream: DataInputStream? = null try { urlIS = url.openStream() dataInputStream = DataInputStream(