如何从数据库 INSIDE 数据表中下载画布图像

Posted

技术标签:

【中文标题】如何从数据库 INSIDE 数据表中下载画布图像【英文标题】:How to download canvas image from Database INSIDE datatables 【发布时间】:2019-12-28 02:36:52 【问题描述】:

我有一个保存在 mysql 数据库中的画布图像,可以在使用数据表和 php 的表中看到,但我无法下载图像。

这是我的 JS 文件,它将 ajax 请求发送到服务器:

$(document).ready(function()
  var data = $('#dataList').DataTable(
    "lengthChange": false,
    "processing":true,
    "order":[],
    "ajax":
        url:"/php/process.php",
        type:"POST",
        data:action:'listData',
        dataType:"json"
    ,
    "columnDefs":[
        
            "targets":[0, 5, 6],
            "orderable":true,
        ,
    ],
    "pageLength": 10
  );

这里是process.php

$sqlQuery = "SELECT * FROM table1 AS a LEFT JOIN sketch AS s ON a.id= s.id";

$auftragData = array();
$result = $this->dbc -> prepare($sqlQuery);
$result -> execute();

 while ( $tableResult= $result->fetch(PDO::FETCH_ASSOC) ) 
  $resultRows = array();
  $resultRows[] = $tableResult['id'];
  $resultRows[] = ucfirst($tableResult['cust_id']);
  $resultRows[] = $tableResult['typ'];
  $resultRows[] = $tableResult['status'];
  $resultRows[] = $tableResult['sketch'];
  if ($tableResult['sketch']) 
      $resultRows[] = '<a id="download" download="sketch.png"><button type="button">Download Image</button></a>';
        
   $resultRows[] = '<button type="button" name="update" id="'.$tableResult["id"].'" class="btn btn-warning btn-xs update">update</button>';
   $resultRows[] = '<button type="button" name="delete" id="'.$tableResult["id"].'" class="btn btn-danger btn-xs delete" >delete</button>';
 $finalData[] = $auftragRows;
        
$numRows = $result -> rowCount();

    $output = array(
        "draw"          =>  $numRows,
        "recordsTotal"      =>  $numRows,
        "recordsFiltered"   =>  $numRows,
        "data"          =>  $finalData
        );
        echo json_encode($output);
      $this->dbc = NULL;
      exit;
    

图片网址是: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4QAAAH0CAYAAABl8+PTAAAgAElEQVR4Xu3dB9glZ103/u8LJCHhpQkYCUWlWwAFFZDQO0F6lUAkFEEpghQpvuArRboUAaU36YYWpBMhFP1Lk1clIhZAOoIgCUko/+uHs/pks7

上面的代码如何下载图片?

【问题讨论】:

Browser/html Force download of image from src="data:image/jpeg;base64..."的可能重复 上述问题是关于从客户端进行的简单下载。我的 URL 保存在服务器端,我想将其检索到客户端,然后进行下载。这里的问题是数据表 究竟是什么问题? @VladimirSerykh 我已经实现了您发布的上述链接中提到的方式。我知道使用: $resultRows[] = '';函数 downloadSkizze() var download = document.getElementById('downloadSketch'); download.setAttribute("href", 下载); 但我只得到一个黑屏图像。有些东西不工作。 【参考方案1】:

发现问题。 MySQL 数据库中的字段是字符切割,同时将图像保存在服务器上。这样就解决了问题。

【讨论】:

以上是关于如何从数据库 INSIDE 数据表中下载画布图像的主要内容,如果未能解决你的问题,请参考以下文章

如何自动下载从画布元素中获取的图像?

如何将从输入字段获取的画布名称与Javascript中的画布合并?

如何在 HTML5 画布中剪辑 INSIDE 形状?

如何在 HTML5 画布中剪辑多个形状的 INSIDE union?

如何从画布前的变量中写入文本?

如何让用户使用纯 Javascript 将剪贴板中的图像数据粘贴到 Firefox 中的画布元素中?