nginx 获取页面内容 并赋值于变量

膜拜tomato
  • 102

假设有 http://xxx.xxx/a.html
nginx 如何获取到 a.html 页面中的 指定内容 <img src=指定内容> ,并赋值给 变量呢
因为我想对这个内容进行set_encode_base64 处理然后显示出来。

回复
阅读 4.8k
3 个回答

这不是nginx应该负责的活。
如果一定要这么干,两个办法:

  1. 开发nginx的模块,在模块里做文本处理。可以用c或者使用nginx-lua这个模块。

  2. 将html文件交给网站代码处理,比如php、java等,在这些代码里实现读取html和图片,编码和替换等操作。

建议选择2

变量放在哪里,显示在哪里,这都是需要补充的细节。
对于页面具体的内容,不是nginx负责的范围。

nginx的作用是反向代理,属于tcp/ip层面转发消息,如果用ngnix处理base64会导致内存消耗过大。

建议:
获取src内容,然后使用java生成base64字符串,并替换src

import java.io.IOException;

import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

public class Test{
public static void main (String args[]) throws IOException {
 BufferedImage img = ImageIO.read(new File("C:/Test/logo.png"));
        BufferedImage newImg;
        String imgstr;
 imgstr = encodeToString(img, "png");
        System.out.println(imgstr);
}
public static String encodeToString(BufferedImage image, String type) {
        String imageString = null;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();

        try {
            ImageIO.write(image, type, bos);
            byte[] imageBytes = bos.toByteArray();

            BASE64Encoder encoder = new BASE64Encoder();
            imageString = encoder.encode(imageBytes);

            bos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return imageString;
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏