imgupload-postcc.html -- PostImage Upload - Auto-Key

PostImage Upload

cors.php -- <?php header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST, OPTIONS'); header('Access-Control-Allow-Headers: Content-Type'); // Function to fetch data from a URL function fetchDataFromUrl($url, $method = 'GET', $headers = [], $body = null) { // Validate and sanitize the URL $url = filter_var($url, FILTER_SANITIZE_URL); if (!filter_var($url, FILTER_VALIDATE_URL)) { return ['error' => 'Invalid URL']; } // Prepare HTTP context options $options = [ 'http' => [ 'method' => $method, 'ignore_errors' => true, 'header' => '' ] ]; // Add custom headers if (!empty($headers)) { foreach ($headers as $key => $value) { $options['http']['header'] .= "$key: $value\r\n"; } } // Add body for POST/PUT requests if ($body !== null && in_array($method, ['POST', 'PUT', 'PATCH'])) { $options['http']['content'] = $body; if (!isset($headers['Content-Length'])) { $options['http']['header'] .= "Content-Length: " . strlen($body) . "\r\n"; } } $context = stream_context_create($options); $response = @file_get_contents($url, false, $context); if ($response === false) { return ['error' => 'Unable to fetch data from URL']; } return ['data' => $response, 'headers' => $http_response_header]; } // Handle OPTIONS preflight if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit(0); } // Handle POST requests (MUST COME FIRST!) if ($_SERVER['REQUEST_METHOD'] === 'POST') { $input = file_get_contents('php://input'); if (!empty($input)) { $postData = json_decode($input, true); if (isset($postData['query'])) { $url = htmlspecialchars($postData['query']); $method = isset($postData['method']) ? $postData['method'] : 'GET'; $headers = isset($postData['headers']) ? $postData['headers'] : []; $body = isset($postData['body']) ? $postData['body'] : null; $result = fetchDataFromUrl($url, $method, $headers, $body); if (isset($result['error'])) { header('Content-Type: application/json'); echo json_encode($result); exit; } $contentType = 'text/plain'; foreach ($result['headers'] as $header) { if (stripos($header, 'Content-Type:') === 0) { $contentType = substr($header, strlen('Content-Type: ')); break; } } header('Content-Type: ' . $contentType); echo $result['data']; exit; } header('Content-Type: application/json'); echo json_encode(['error' => 'No query parameter provided in POST data']); exit; } header('Content-Type: application/json'); echo json_encode(['error' => 'No POST data received']); exit; } // Handle GET requests if ($_SERVER['REQUEST_METHOD'] === 'GET') { if (isset($_GET['query'])) { $url = htmlspecialchars($_GET['query']); $result = fetchDataFromUrl($url); if (isset($result['error'])) { header('Content-Type: application/json'); echo json_encode($result); exit; } $contentType = 'text/plain'; foreach ($result['headers'] as $header) { if (stripos($header, 'Content-Type:') === 0) { $contentType = substr($header, strlen('Content-Type: ')); break; } } header('Content-Type: ' . $contentType); echo $result['data']; exit; } header('Content-Type: application/json'); echo json_encode(['error' => 'No query parameter provided']); exit; } // Invalid method header('Content-Type: application/json'); echo json_encode(['error' => 'Invalid request method']); exit; OldVer: PCEtLS1odHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83OTY5MjI4OC9ob3ctdG8tdXBsb2FkLWltYWdlcy12aWEtYXBpLW9uLXBvc3RpbWFnZXMtb3JnLS0tLT4KPGJyPiBGb3IgRGlyZWN0TGluayBjaGFuZ2UgdG8gY29uc3QgZGlyZWN0TWF0Y2ggPSByZXNwb25zZVRleHQubWF0Y2goLzxob3RsaW5rPihodHRwczpcL1wvaVwucG9zdGltZ1wuY2NcL1thLXpBLVowLTldK1wvW2EtekEtWjAtOS5fLV0rKTxcL2hvdGxpbms+Lyk7PGJyPjxocj4KPCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDx0aXRsZT5Qb3N0SW1hZ2UgVXBsb2FkIC0gQXV0by1LZXk8L3RpdGxlPgogICAgPHN0eWxlPgogICAgICAgIGJvZHkgeyBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgcGFkZGluZzogMjBweDsgbGluZS1oZWlnaHQ6IDEuNTsgYmFja2dyb3VuZDogI2Y0ZjdmNjsgfQogICAgICAgIC5jb250YWluZXIgeyBtYXgtd2lkdGg6IDU1MHB4OyBtYXJnaW46IGF1dG87IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDI1cHg7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJhY2tncm91bmQ6IHdoaXRlOyBib3gtc2hhZG93OiAwIDRweCAxMHB4IHJnYmEoMCwwLDAsMC4xKTsgfQogICAgICAgIGxhYmVsIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6ICM1NTU7IH0KICAgICAgICBpbnB1dCB7IHdpZHRoOiAxMDAlOyBtYXJnaW4tYm90dG9tOiAxNXB4OyBwYWRkaW5nOiAxMHB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXItcmFkaXVzOiA2cHg7IH0KICAgICAgICBidXR0b24geyB3aWR0aDogMTAwJTsgcGFkZGluZzogMTJweDsgYmFja2dyb3VuZDogIzAwN2JmZjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDZweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXdlaWdodDogYm9sZDsgfQogICAgICAgIGJ1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6ICMwMDU2YjM7IH0KICAgICAgICAjcmVzdWx0IHsgbWFyZ2luLXRvcDogMjBweDsgfQogICAgICAgIC51cmwtYm94IHsgYmFja2dyb3VuZDogI2Y5ZjlmOTsgcGFkZGluZzogMTBweDsgYm9yZGVyOiAxcHggc29saWQgI2VlZTsgbWFyZ2luLXRvcDogMTBweDsgYm9yZGVyLXJhZGl1czogNXB4OyB3b3JkLWJyZWFrOiBicmVhay1hbGw7IH0KICAgICAgICAjZGVidWctbG9nIHsgYmFja2dyb3VuZDogIzIyMjsgY29sb3I6ICMwZjA7IHBhZGRpbmc6IDEwcHg7IGZvbnQtc2l6ZTogMTFweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBtYXJnaW4tdG9wOiAyMHB4OyBib3JkZXItcmFkaXVzOiA1cHg7IG1heC1oZWlnaHQ6IDIwMHB4OyBvdmVyZmxvdy15OiBhdXRvOyBkaXNwbGF5OiBub25lOyB9CiAgICAgICAgaW1nIHsgbWF4LXdpZHRoOiAxMDAlOyBtYXJnaW4tdG9wOiAxNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBib3JkZXItcmFkaXVzOiA1cHg7IH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGgzPlBvc3RJbWFnZSBVcGxvYWQ8L2gzPgogICAgCiAgICA8bGFiZWw+QVBJIEtleTo8L2xhYmVsPgogICAgPGlucHV0IGlkPSJhcGlLZXkiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJFbnRlciBBUEkgS2V5IG9yIHVzZSA/YXBpa2V5PSBpbiBVUkwiPgogICAgCiAgICA8bGFiZWw+U2VsZWN0IEltYWdlOjwvbGFiZWw+CiAgICA8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGVJbnB1dCIgYWNjZXB0PSJpbWFnZS8qIj4KICAgIAogICAgPGJ1dHRvbiBvbmNsaWNrPSJ1cGxvYWQoKSI+VXBsb2FkICYgUGFyc2U8L2J1dHRvbj4KCiAgICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgogICAgPGRpdiBpZD0iZGVidWctbG9nIj48L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0PgovLyAtLS0gTkVXOiBSZWFkIFF1ZXJ5U3RyaW5nIG9uIFBhZ2UgTG9hZCAtLS0Kd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsKICAgIGNvbnN0IGtleUZyb21VcmwgPSB1cmxQYXJhbXMuZ2V0KCdhcGlrZXknKTsKICAgIGlmIChrZXlGcm9tVXJsKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwaUtleScpLnZhbHVlID0ga2V5RnJvbVVybDsKICAgICAgICBjb25zb2xlLmxvZygiQVBJIEtleSBsb2FkZWQgZnJvbSBVUkwgcGFyYW1ldGVycy4iKTsKICAgIH0KfTsKCmFzeW5jIGZ1bmN0aW9uIHVwbG9hZCgpIHsKICAgIGNvbnN0IGtleSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcGlLZXknKS52YWx1ZTsKICAgIGNvbnN0IGZpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0JykuZmlsZXNbMF07CiAgICBjb25zdCByZXN1bHRBcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOwogICAgY29uc3QgZGVidWdMb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVidWctbG9nJyk7CiAgICAKICAgIGlmICgha2V5IHx8ICFmaWxlKSB7IGFsZXJ0KCdQbGVhc2UgcHJvdmlkZSBib3RoIEtleSBhbmQgRmlsZScpOyByZXR1cm47IH0KICAgIAogICAgcmVzdWx0QXJlYS5pbm5lckhUTUwgPSAiPGI+VXBsb2FkaW5nLi4uPC9iPiI7CiAgICBkZWJ1Z0xvZy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwoKICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICByZWFkZXIub25sb2FkID0gYXN5bmMgZnVuY3Rpb24oZSkgewogICAgICAgIGNvbnN0IGJhc2U2NCA9IGUudGFyZ2V0LnJlc3VsdC5zcGxpdCgnLCcpWzFdOwogICAgICAgIAogICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7CiAgICAgICAgZGF0YS5hcHBlbmQoJ2tleScsIGtleSk7CiAgICAgICAgZGF0YS5hcHBlbmQoJ2ltYWdlJywgYmFzZTY0KTsKICAgICAgICBkYXRhLmFwcGVuZCgnbycsICcyYjgxOTU4NDI4NWMxMDIzMTg1NjgyMzhjN2Q0YTRjNycpOwogICAgICAgIGRhdGEuYXBwZW5kKCdtJywgJzU5YzJhZDRiNDZiMGMxZTEyZDU3MDMzMDJiZmYwMTIwJyk7CiAgICAgICAgZGF0YS5hcHBlbmQoJ3ZlcnNpb24nLCAnMS4wLjEnKTsKICAgICAgICBkYXRhLmFwcGVuZCgnbmFtZScsIGZpbGUubmFtZS5zcGxpdCgnLicpWzBdKTsKICAgICAgICBkYXRhLmFwcGVuZCgndHlwZScsIGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpKTsKCiAgICAgICAgY29uc3QgcHJveHkgPSAnaHR0cHM6Ly9jb3JzcHJveHkuaW8vPyc7CiAgICAgICAgY29uc3QgdGFyZ2V0ID0gJ2h0dHBzOi8vYXBpLnBvc3RpbWFnZS5vcmcvMS91cGxvYWQnOwoKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChwcm94eSArIGVuY29kZVVSSUNvbXBvbmVudCh0YXJnZXQpLCB7CiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9LAogICAgICAgICAgICAgICAgYm9keTogZGF0YQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlVGV4dCA9IGF3YWl0IHJlcy50ZXh0KCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBkZWJ1Z0xvZy5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgZGVidWdMb2cudGV4dENvbnRlbnQgPSAiUkFXIFJFU1BPTlNFOlxuIiArIHJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgIC8vIFJlZ2V4IHRvIGdyYWIgdGhlIFVSTHMgZnJvbSB0aGUgWE1ML1RleHQgcmVzcG9uc2UKICAgICAgICAgICAgY29uc3QgZ2FsbGVyeU1hdGNoID0gcmVzcG9uc2VUZXh0Lm1hdGNoKC9odHRwczpcL1wvcG9zdGltZ1wuY2NcL1thLXpBLVowLTldKy8pOwogICAgICAgICAgICBjb25zdCBkaXJlY3RNYXRjaCA9IHJlc3BvbnNlVGV4dC5tYXRjaCgvaHR0cHM6XC9cL2lcLnBvc3RpbWdcLmNjXC9bYS16QS1aMC05XStcL1thLXpBLVowLTkuXy1dKy8pOwoKICAgICAgICAgICAgY29uc3QgZ2FsbGVyeVVybCA9IGdhbGxlcnlNYXRjaCA/IGdhbGxlcnlNYXRjaFswXSA6IG51bGw7CiAgICAgICAgICAgIGNvbnN0IGRpcmVjdFVybCA9IGRpcmVjdE1hdGNoID8gZGlyZWN0TWF0Y2hbMF0gOiBudWxsOwoKICAgICAgICAgICAgaWYgKGdhbGxlcnlVcmwgfHwgZGlyZWN0VXJsKSB7CiAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IGA8cCBzdHlsZT0iY29sb3I6Z3JlZW47Ij48Yj5VcGxvYWQgU3VjY2Vzc2Z1bCE8L2I+PC9wPmA7CiAgICAgICAgICAgICAgICBpZiAoZ2FsbGVyeVVybCkgewogICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9InVybC1ib3giPjxzdHJvbmc+R2FsbGVyeTo8L3N0cm9uZz48YnI+JHtnYWxsZXJ5VXJsfTwvZGl2PmA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0VXJsKSB7CiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz0idXJsLWJveCI+PHN0cm9uZz5EaXJlY3QgTGluazo8L3N0cm9uZz48YnI+JHtkaXJlY3RVcmx9PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9IiR7ZGlyZWN0VXJsfSI+YDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlc3VsdEFyZWEuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJlc3VsdEFyZWEuaW5uZXJIVE1MID0gYDxwIHN0eWxlPSJjb2xvcjpvcmFuZ2U7Ij5VcGxvYWRlZCwgYnV0IGNvdWxkbid0IGZpbmQgbGlua3MuIENoZWNrIGRlYnVnIGJveC48L3A+YDsKICAgICAgICAgICAgfQoKICAgICAgICB9IGNhdGNoKGVycikgewogICAgICAgICAgICByZXN1bHRBcmVhLmlubmVySFRNTCA9IGA8cCBzdHlsZT0iY29sb3I6cmVkOyI+RXJyb3I6ICR7ZXJyLm1lc3NhZ2V9PC9wPmA7CiAgICAgICAgfQogICAgfTsKICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwp9Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K