Browse Source

send_local_file: add application/octet-stream hack
cached_url: return original requested filename to save as

Andrew Dolgov 1 year ago
parent
commit
88adf3da1b
2 changed files with 10 additions and 3 deletions
  1. 3 3
      classes/handler/public.php
  2. 7 0
      include/functions.php

+ 3 - 3
classes/handler/public.php

@@ -934,17 +934,17 @@ class Handler_Public extends Handler {
 	}
 
 	function cached_url() {
-		@$hash = basename($_GET['hash']);
+		@$req_filename = basename($_GET['hash']);
 
 		// we don't need an extension to find the file, hash is a complete URL
-		$hash = preg_replace("/\.[^\.]*$/", "", $hash);
+		$hash = preg_replace("/\.[^\.]*$/", "", $req_filename);
 
 		if ($hash) {
 
 			$filename = CACHE_DIR . '/images/' . $hash;
 
 			if (file_exists($filename)) {
-				header("Content-Disposition: inline; filename=\"$hash\"");
+				header("Content-Disposition: inline; filename=\"$req_filename\"");
 
 				send_local_file($filename);
 

+ 7 - 0
include/functions.php

@@ -2574,6 +2574,13 @@
 			}
 
 			$mimetype = mime_content_type($filename);
+
+			// this is hardly ideal but 1) only media is cached in images/ and 2) seemingly only mp4
+			// video files are detected as octet-stream by mime_content_type()
+
+			if ($mimetype == "application/octet-stream")
+				$mimetype = "video/mp4";
+
 			header("Content-type: $mimetype");
 
 			$stamp = gmdate("D, d M Y H:i:s", filemtime($filename)) . " GMT";