@@ -19,27 +19,30 @@ public function __construct($method) {
19
19
try {
20
20
if ($ method !== 'GET ' ) throw new BadMethod ('Bad method. Use GET. ' );
21
21
22
- $ id = filter_var (Misc::getVar ('id ' ), FILTER_VALIDATE_REGEXP , ['options ' => ['regexp ' => '/^D([0-9]|[A-z]){13}/ ' ]]);
23
- $ p = Misc::getVar ('p ' );
24
- $ file = DataStorage::getFile ($ id , $ p );
22
+ $ url = explode ('/ ' , strtoupper ($ _SERVER ['REQUEST_URI ' ]));
23
+ $ id = filter_var ($ url [2 ], FILTER_VALIDATE_REGEXP , ['options ' => ['regexp ' => '/^D([0-9]|[A-z]){13}/ ' ]]);
24
+ $ password = filter_var ($ url [3 ]);
25
+ $ file = DataStorage::getFile ($ id , $ password );
26
+ $ metadata = $ file ->getMetaData ();
27
+ $ content = base64_encode ($ file ->getContent ());
25
28
26
- if (isset ($ file )) {
27
- $ metadata = $ file ->getMetaData ();
28
- $ content = base64_encode ($ file ->getContent ());
29
- parent ::outputJSON ([
30
- 'type ' => $ metadata ['type ' ],
31
- 'filename ' => $ metadata ['name ' ],
32
- 'length ' => $ metadata ['size ' ],
33
- 'data ' => $ content
34
- ], 200 );
29
+ if ($ file ->getMaxViews ()) { // max views > 0
30
+ if ($ file ->getMaxViews () <= $ file ->getCurrentViews () + 1 ) DataStorage::deleteFile ($ id );
31
+ else $ file ->setCurrentViews ($ file ->getCurrentViews () + 1 );
32
+ }
33
+ // Set headers
34
+ header ("Content-Description: File Transfer " );
35
+ header ("Expires: 0 " );
36
+ header ("Pragma: public " );
37
+ header ("Content-Type: {$ metadata ['type ' ]}" );
38
+ header ("Content-Disposition: inline; filename= \"{$ metadata ['name ' ]}\"" );
39
+ header ("Content-Length: {$ metadata ['size ' ]}" );
35
40
36
- if ($ file ->getMaxViews ()) { // max views > 0
37
- if ($ file ->getMaxViews () <= $ file ->getCurrentViews () + 1 ) DataStorage::deleteFile ($ id );
38
- else $ file ->setCurrentViews ($ file ->getCurrentViews () + 1 );
39
- }
40
- } else throw new MissingEntry ('File not found ' );
41
+ // output file contents
42
+ echo base64_decode ($ content );
41
43
} catch (Exception $ e ) {
42
- parent ::outputJSON (['error ' => $ e ->getMessage ()], $ e ->getCode () ?: 400 );
44
+ parent ::outputJSON (['error ' => 'File not found ' ], 404 );
45
+ error_log ($ e ->getMessage ());
43
46
}
44
47
return NULL ;
45
48
}
0 commit comments