html5-ajax-php-python-实现服务器文件夹搜索-前端显示

2 篇文章 1 订阅

1.网页前端

Learn/index.php文件,前端搜索字符串。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="./js/jquery.min.js"></script>
<body>
<div style="float: left"><input type="text" id="keyword" style="width: 300px;"/></div>
<div style="float: left;margin-left: 10px;"><input type="button" id="SouSuo" value="搜索"/></div>
<div style="clear: both"><a href="references/index.html">主页</a></div>
<div>
    <hr>
</div>
<div style="float: none;width:500px; height:300px;clear: both;" id="showtext"></div>
<?php
/*phpinfo();*/
?>

</body>
</html>

<script type="text/javascript">
    $(document).ready(function (e) {

        $("#SouSuo").click(
            function () {
                var keyword = $("#keyword").val();
                var postdata = {"keyword": keyword};

                console.log("关键词:" + postdata["keyword"]);
                $.get("SearchContent.php", postdata,
                    function (data) {
                        $("#showtext").html(data);
                    });
            }
        );
    });
</script>

2.php端接收并调用python

Learn/SearchContent.php文件实现调用python,并将结果返回。

<?php
//这里两句话很重要,第一讲话告诉浏览器返回的数据是什么格式
header("Content-Type: text/html;charset=utf-8");
//告诉浏览器不要缓存数据
header("Cache-Control: no-cache");

$keyword = $_GET["keyword"];
$cmd = shell_exec("python SearchHtmlFile.py $keyword");
echo($cmd);
?>

3.Python实现文件夹检索

Learn/SearchHtmlFile.py实现文件夹检索:

# coding=utf-8
import os
import json
import re
import sys

# 读取文件
def ReadFile(filename):
    #读取数据
    data = None;
    with open(filename, 'rb') as fr:
        data = fr.read();

    #编码转换
    try:
        strData = str(data, 'utf-8');
        return strData;
    except:
        try:
            strData = str(data, 'GBK');
            return strData;
        except Exception as e:
            try:
                strData = str(data, 'latin1');
                return strData;
            except Exception as e:
                print(filename);
                pass;
            pass;
    return None;

# 查找内容
def KeyWordExised(srcFullFilename,keyword):
    # 读取文件数据
    fileData = ReadFile(srcFullFilename);
    if fileData.find(keyword)>=0:
        return True;
    else:
        return False;

# 搜索文件
def SearchFolder(folderName,webstie,keyword):
    #结果
    fileListRlt=[];

    # 获取所有的头文件
    for root, dirs, files in os.walk(folderName):
        for shortFilename in files:
            # html
            fileInfo = os.path.splitext(shortFilename);
            if len(fileInfo) != 2:
                continue;
            if fileInfo[1].lower() != ".html":
                continue;

            # 读取文件数据
            srcFullFilename = os.path.join(root, shortFilename);
            if KeyWordExised(srcFullFilename,keyword):
                fileListRlt.append(srcFullFilename);

    #格式化为html
    html="";
    for file in fileListRlt:
        sfilename = os.path.basename(file);
        webinfo=file.replace(folderName,webstie);
        webinfo=webinfo.replace("\\","/");
        atag='<a href="%s" target="_blank">%s</a><br />'%(webinfo,sfilename);
        html=html+atag;
    return html;

para1 = sys.argv[1];
htmlStr=SearchFolder(r"C:\phpstudy_pro\WWW\Learn","http://119.23.229.158:100",para1);
print(htmlStr);

4.php调用Shell问题

PHP安全模式,网上说PHP安全模式会影响到shell_php()函数的执行。我查了一下,发现php.ini中安全模式只有sql。

[SQL]
sql.safe_mode=Off

没有其余的安全模式。并且安全模式还会影响exec()函数的使用,我以前曾经使用过exec()函数,因此不是安全模式的问题。
php.ini中disable_functions参数,百度时,有人说是php.ini配置文件中disable_funcitons=shell_exec()。禁用了shell_exec()函数。好吧,php.ini默认disable_funcitons= (null)。看来不是这里的缘由呢。程序执行目录问题,以后,我有检查了一下shell_exec()的执行代码,发现执行目录D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe有问题。在第二个目录Program Files中有空格存在,以前考虑到不能含有中文的问题,因此安装wkhtmltopdf时,走的是D盘下的默认目录(原本是C盘,我改成D盘了)。既然不能走中文目录,是否是含有空格的目录也是不行的呢?因而我就把D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe改成D:\wkhtmltopdf\bin\wkhtmltopdf.exe。而后修改了shell_exec()执行代码的执行目录。最后执行成功,生成了pdf文件。环境变量问题,此外把文件添加到环境变量中,能够不用带目录执行wkhtmltopdf程序。只不过,由于是测试wkhtmltopdf是否能执行含有html+css代码的文件生成带有css格式PDF文件,因此没有添加到环境变量中,但愿有小伙伴使用wkhtmltopdf时,能够安装wkhtmltopdf到D:\Program Files下,而后添加到环境变量内,用php的shell_exec()使用一下,看看可否成功。

5.作者答疑

如有疑问,敬请留言。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要在 Python 中安装 Flask 或 Django 等 Web 框架来处理 HTTP 请求。以 Flask 为例,以下是一个简单的示例: ```python from flask import Flask, request app = Flask(__name__) @app.route('/post', methods=['POST']) def post(): data = request.json # 处理数据 return 'success' if __name__ == '__main__': app.run() ``` 在这个示例中,我们创建了一个名为 app 的 Flask 实例,并定义了一个 /post 的路由,该路由只接受 POST 请求。当有 POST 请求到达时,Flask 将自动解析请求体中的 JSON 数据,并将其作为 python 字典类型存储在 request.json 中。我们可以在 post() 函数中访问这个字典,从而对数据进行处理。最后,将 'success' 字符串作为响应返回。 在前端部分,可以使用 jQuery 的 $.ajax() 方法来发送 POST 请求,如下所示: ```javascript $.ajax({ url: '/post', type: 'POST', contentType: 'application/json', data: JSON.stringify({key1: 'value1', key2: 'value2'}), success: function(response) { console.log(response); }, error: function(jqXHR, textStatus, errorThrown) { console.log(textStatus, errorThrown); } }); ``` 在这个示例中,我们将请求的 URL 设置为 /post,请求类型设置为 POST,并将请求的数据设置为一个包含 key1 和 key2 两个字段的 JSON 对象。注意,我们还需要将 contentType 设置为 application/json,以便告诉服务器发送的数据是 JSON 格式。如果请求成功,控制台将打印 'success';否则,将打印请求失败的错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值