Tasmota/api/upload-tasmota.php

54 lines
1.7 KiB
PHP
Raw Permalink Normal View History

2022-12-13 13:56:46 +00:00
<?php
// mkdir and chmod arduino folder to 777
//
//var_dump($_FILES);
/**
* GZIPs a file on disk (appending .gz to the name)
*
* From http://stackoverflow.com/questions/6073397/how-do-you-create-a-gz-file-using-php
* Based on function by Kioob at:
* http://www.php.net/manual/en/function.gzwrite.php#34955
*
* @param string $source Path to file that should be compressed
* @param integer $level GZIP compression level (default: 9)
* @return string New filename (with .gz appended) if success, or false if operation fails
*/
function gzCompressFile($source, $level = 9){
$dest = $source . '.gz';
$mode = 'wb' . $level;
$error = false;
if ($fp_out = gzopen($dest, $mode)) {
if ($fp_in = fopen($source,'rb')) {
while (!feof($fp_in))
gzwrite($fp_out, fread($fp_in, 1024 * 512));
fclose($fp_in);
} else {
$error = true;
}
gzclose($fp_out);
} else {
$error = true;
}
if ($error)
return false;
else
return $dest;
}
$image = basename($_FILES["file"]["name"]);
//$image = $_FILES["file"]["name"]; // Solves an issue where basename returns Array
$target_file = "tasmota/".$image;
$hostname = $_SERVER['SERVER_NAME'];
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
if (strpos($target_file, "tasmota32") | strpos($target_file, ".gz")) {
2022-12-13 13:56:46 +00:00
echo "The file $image has been uploaded to OTA server $hostname. \n";
} else {
gzCompressFile($target_file);
echo "The files $image and $image.gz have been uploaded to OTA server $hostname. \n";
}
} else {
echo "Sorry, there was an error uploading your file $image to OTA server $hostname. \n";
}
?>