三分快乐,七纷幸福 发布的文章

mac升级系统后,MAMP PRO 打开就报错:Either you did not provide the necessary admin credentials or the MAMP PRO package could not be initialized correctly. You can either restart the application and try again or re-install the software.
需要执行一下操作:
打开终端,执行

sudo launchctl load -w /Library/LaunchDaemons/de.appsolute.mampprohelper.plist 

背景:
今天遇到一个问题,上传中文名称的文件,无法获取中文名称,但是数字和字符串命名的文件能正常上传,服务器为docker镜像部署的服务器,本地切换普通mamp环境,文件上传正常,通过chartGPT进行相关问题搜索,发现是因为编码问题导致的
处理:
在DockerFile中,新增以下参数

ENV LANG=C.UTF-8
ENV LANGUAGE=C.UTF-8
ENV LC_ALL=C.UTF-8

修改完重新构建镜像包,问题解决

如果中间件请求接口返回是数据流时,这时没法直接将数据流直接输出到响应体的data中,需要在中间件中直接将文件下载下来

代码如下:

$response = HttpUtil::request($urlInfo, $paramsData, $method, $header, $returnBody);//文件流
$header = [
   'Content-Type'        => 'application/octet-stream',
   'Content-Disposition' => 'attachment; filename="' . rawurlencode('反馈列表.xlsx') . '"',
];
return response($response)->withHeaders($header);

备注:文件名如果涉及到中文,需要转义以后可以,否则下载文件名称乱码
附:urlencode和rawurlencode区别
urlencode:是一种将字符串进行编码的函数,主要用于将字符串转换为 URL 编码格式。它将字符串中的特殊字符(如空格、中文等)转换为%加上字符的 ASCII 码十六进制表示形式。这种编码方式在将数据作为 URL 的一部分进行传递时非常有用,比如在GET请求的查询字符串中。
rawurlencode:同样是用于 URL 编码的函数。它的主要目的也是对字符串进行编码,使其能够安全地用于 URL 中。与urlencode不同的是,它在编码时遵循 RFC 3986 标准,对于一些字符的编码方式更为严格和规范。

今天遇到一个问题,生成小程序短链的时候,请求参数page_url附带的query长度过长,导致小程序报错,提供一下解决思路
解决步骤:
1、接收前端参数时,所有参数生成一个唯一标识,作为key,参数作为value存入redis中
2、生成短链时,把唯一标识作为query传入page_url中,例如?unique_data=123456
3、前端小程序落地页获取url中的unique_data,然后通过接口,获取unique_data对应的数据内容回显到落地页
结果:
因为请求的unique_data是固定长度,不管前端请求参数长度为多少,都不会导致page_url长度超1024