Render pictures at a canonical URL
authorJacob Casper <dev@jacobcasper.com>
Sun, 26 Jun 2022 20:20:30 +0000 (15:20 -0500)
committerJacob Casper <dev@jacobcasper.com>
Sun, 26 Jun 2022 20:23:46 +0000 (15:23 -0500)
Spit out the full quality images when requested at their exact URL. This
allows use as a img src element or canonical url for the RSS enclosure
element to download.

index.php
pic.php [new file with mode: 0644]

index c7b91bc..b5b343e 100644 (file)
--- a/index.php
+++ b/index.php
@@ -18,6 +18,9 @@ switch ($path) {
     case '':
         require './app.php';
         break;
+    case 'pic':
+        require './pic.php';
+        break;
     case 'upload':
         require './upload.php';
         break;
diff --git a/pic.php b/pic.php
new file mode 100644 (file)
index 0000000..ece33b9
--- /dev/null
+++ b/pic.php
@@ -0,0 +1,27 @@
+<?php
+    $id = array_shift($pieces);
+
+    if (empty($id)) {
+        header('HTTP/1.0 400 Bad Request');
+        die('400 Bad (Empty) Request');
+    }
+
+    require_once __DIR__ . '/db.php';
+
+    $db = get_db();
+    $fetch_stmt = $db->prepare('SELECT
+        pi.ID, pi.MIME_TYPE, pi.PIC_B64
+        FROM pics pi
+        WHERE pi.ID = :id');
+    $fetch_stmt->bindValue(':id', $id);
+    $result = $fetch_stmt->execute();
+    if ($pic = $result->fetchArray()) {
+        $mime_type = $pic['MIME_TYPE'];
+        $file_b64 = $pic['PIC_B64'];
+        $pic_id = $pic['ID'];
+        header("Content-Type: {$mime_type}");
+        die(base64_decode($file_b64, true));
+    }
+    header('HTTP/1.0 404 Not Found');
+    die('404 File Not Found');
+?>