代码之家  ›  专栏  ›  技术社区  ›  Alan M.

在将HTML上传到服务器时,我如何使用LZ字符串?

  •  0
  • Alan M.  · 技术社区  · 3 年前

    下面的HTML/JS测试页面将LZ压缩内容(一个HTML表)上传到PHP测试脚本,该脚本将上传的内容返回到浏览器。

    使用如图所示的HTML,返回的内容 匹配发送的内容。但是,如果您对HTML进行一些小的更改(例如,将单词“HELLO”更改为“HEADING”,或删除thead),它就会起作用。

    在这两种情况下(即,比较结果为真或假),字符看起来是相同的,并通过差异检查器。

    我没有检查 LZString.compressToBase64() 因为我希望有更好的压缩效果。

    <html>
        <head>
            <title>LZ-String Test</title>
            
            <style>
                table {border-collapse: collapse;}
                th, td {border: 1px solid black;}
            </style>
    
            <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
            <script type="text/javascript" language="javascript" src="https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.4.4/lz-string.min.js"></script>
            <script>
                var content = `
                    <table>
                        <thead>
                            <tr>
                                <th>HELLO</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>10</td>
                            </tr>
                        </tbody>
                    </table>
                `;
            
                $(document).ready(function() {
                    var formData = new FormData();
                    var compressedContent = LZString.compress(content);
                    formData.append("fileContent", compressedContent);
                
                    $.ajax({
                        type: "POST",
                        url: "test.php",
                        data: formData,
                        cache: false,
                        processData: false,
                        contentType: false
                        
                    }).done(function(data) {
                        var result = JSON.parse(data);
                        if (result.result == "success") {
                            $("body").append("<p>This is the html I compressed:<br>" + content + "</p>");
                            $("body").append("<p>This is what I sent to the server:<br>" + result.received + ".</p>");
                            $("body").append("<p>This is what I received from the server:<br>" + result.received + ".</p>");
                            $("body").append("<p>Using ===, what was sent matches what was returned is " + (compressedContent === result.received) + ".</p>");
                            $("body").append("<p>Using localCompare, what was sent matches what was returned is " + (compressedContent.localeCompare(result.received) === 0) + ".</p>");
                        }
                    });
                });
            </script>
        </head>
        <body></body>
    </html>
    
    <?php
        $content = $_REQUEST["fileContent"];
        echo json_encode(array ("result" => "success", "received" => $content));
    ?>
    
    0 回复  |  直到 3 年前