从本地文件系统复制文件并处理到另一台服务器的数据库中

时间:2018-08-09 23:47:40

标签: php curl

前言: 我每隔几个小时就会从脚本生成一个图像。这些图像将保存到pi的本地文件系统中。我的目标是让网页显示最新图像。我不希望网络服务器在pi上运行。

我尝试过的方法: 我从HTML表单创建了一个php上传处理程序。这将从表单中获取图像,并将其放置在Web服务器文件系统上,然后将ID,文件名,日期和路径插入数据库。我的想法是使用curl将每个图像从pi发布到Web服务器,然后将其上传并插入到数据库中,然后立即从Pi的文件系统中删除。无论出于什么原因,我都无法将其卷曲发布到HTML表单。

我知道这很讨厌。我不想将图像发送到Web服务器,并且每分钟运行一次cron作业来处理任何新文件,因为我希望它是实时的,也不想php进程每分钟都挂出。

任何想法将不胜感激!

2 个答案:

答案 0 :(得分:0)

一种方法可能是:

  1. 生成后将图像转换为Base64。 $data = file_get_contents($path); $save_to_text_field = base64_encode($data);
  2. 以longtext / blob的形式保存在数据库中(数据库中文本存储的选项是什么?)
  3. 在网页上显示为数据URI <img src="data:image/png;base64, [field] >

答案 1 :(得分:0)

感谢所有看过的人!

我使用curl弄明白了-在我的upload.php中出了点问题 这是curl语法:curl -i -F "file=@/home/pi/xxxxxx/xxxxxxx.png" http://xxxxxxx.com/upload.php

这是有效的upload.php

<?php
include 'dbConfig.php';
$statusMsg = '';
$fileName = basename($_FILES["file"]["name"]);
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
 $insert = $db->query("INSERT into images (file_name, uploaded_on) VALUES ('".$fileName."', NOW())");
 if($insert){
                $statusMsg = "The file ".$fileName. " has been uploaded successfully.";
            }else{
                $statusMsg = "File upload failed, please try again.";
            }
            }else{
                $statusMsg = "Sorry, there was an error uploading your file.";
            }
echo $statusMsg;
?>