目录
一、前言
本文基于Luca 的教程《使用ESP32-CAM将图像发布到本地或云服务器-PHP(Photo Manager)》(原文连接)
我自己按照教程做下来时遇到了些许问题,在这里简单介绍这个项目的步骤和解决方法。
(因为不大会写文,要参照原文看,见谅…)
二、我的准备
硬件:带ov2640的esp32-cam
软件:Arduino IDE
服务器:阿里云服务器(Ubuntu)
三、我的云服务器端
1.购买阿里云的Ubuntu
2.远程登录后安装Apache,mysql,php环境
可参考:
Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程
阿里云学生服务器搭建网站(2)-Ubuntu16.04安装php开发环境
3.在服务器的www/html目录下新建upload.php(用于接收esp32数据),代码见原文;
同样在www/html目录下新建文件夹uploads(用于php存放图片数据)
注意:把uploads文件夹修改权限打开!!
Ubuntu命令:在cd到上一级文件夹后sudo chmod -R 777 uploads
此时用浏览器访问 云服务器公网ip/upload.php 会出现如下echo:
四、esp32端(问题较多)
1.按照原文提示填入你的wifi、ip等
2.修改错误:
134行的head改为:
String head = "--RandomNerdTutorials\r\nContent-Disposition: form-data; name="imageFile"; filename="esp32-cam.jpg"\r\nContent-Type: image/jpeg\r\n\r\n";
即添加转义字符”,下同理
135行的tail改为:
String tail = "\r\n--RandomNerdTutorials--\r\n";
173行的if改为:
if (c == '\n') {
177行的if改为:
else if (c != '\r') { getAll += String(c); }
五、上传代码并运行
应该可以看到串口监视器的反馈和网址中的图片了。
六、原文不详细或错误总结
1.文件夹uploads和upload.php位置:/www/html/
2.文件夹uploads的权限
3.esp32代码中缺少转义字符
非常好,感谢作者的分享!?
[…] ESP32-CAM将图像发布到云服务器-PHP(步骤及补充) […]
系统会自动过滤掉反斜杠,跟网页语言冲突了,需要在rn前面加上反斜杠,r好n都是
也是这个问题,请问作者是怎么解决的呢?
“–RandomNerdTutorialsrnContent-Disposition: form-data; name=”imageFile”; filename=”esp32-cam.jpg”rnContent-Type: image/jpegrnrn”; 改成这样就行了
自己去加反斜杠。这个网页是自己要把反斜杠“”给过滤掉的。
因为作者这句话还是有错、应该是: 【 String head = “–RandomNerdTutorialsrnContent-Disposition: form-data; name=”imageFile”; filename=”esp32-cam.jpg”rnContent-Type: image/jpegrnrn”; 】
的确,我复制进来,系统自动把反斜杠””给我删了。
额,我这边怎么修改,也无法正常编译head。太难了。帮帮孩子吧
用本机电脑搭建服务器,能看到测试界面“ESP32-CAM Image upload display interface Welcome to the link of ESP32-CAM photo upload test. This link is only for testing.“ 但是上传图片不成功。ESP32返回 ” Warning: move_uploaded_file(uploads/2022.10.24_17:38:34_esp32-cam.jpg): failed to open stream: No such file or directory in D:phpstudy_proWWWtestupload.php on line 42 Warning: move_uploaded_file(): Unable to move ‘C:WindowsphpC328.tmp’ to ‘uploads/2022.10.24_17:38:34_esp32-cam.jpg’ in D:phpstudy_proWWWtestupload.php on line 42 Sorry, there was an error uploading your file.“ 上传到测试服务器https://gp.qutaojiao.com/test/uploads/,可以成功上传,但是上传的图片都是上一次拍的,本次拍的图片,只能在下一次再拍的时候才能在服务器看到。这是什么原因呢