7. 6. 2016

PHP - obrázky z mobilu na server

Často je problémom ako dostať fotky zo smartfónu do počítača, počítač nemá bluetooth a kábel sa zapatroší.
Sú tu možnosti - nahrať fotky do google (ochrana súkromia?), alebo ich nahrať do rozpísaného mailu (draft).

V prípade domáceho servera s PHP (u mňa NAS) možno narýchlo použiť formulár na nahranie súboru napríklad aj z mobilu cez browser. A browserom na počítači ho stahnuť.

Túto ideu som mal už dlhšie, avšak až nedávno som si našiel 2 hodinky čas a vznikol php skript na serveri.

U servera apache sa dá pozrieť do centrálneho konfiguračného súboru, aká cesta na disku funguje pre web stránky (sekcie directory):
view /etc/apache2/apache2.conf

Po zistení že ide o /var/www/html som v ňom vytvoril adresára "upni" (ako upload-ni) a podadresár pre ukladanie súborov /var/www/html/upni/tmp.
mkdir /var/www/html/upni
mkdir /var/www/html/upni/tmp
chmod 777 /var/www/html/upni/
chmod 777 /var/www/html/upni/tmp/

Práva na adresáre som dal plné, avšak závisí od používateľa a skupín na serveri.
V adresári upni som založil súbor index.php s obsahom:

<html>
 <head>
              <title>UPNI - docasne ulozisko</title>
 </head>
<body bgcolor="black" text="cyan" link="yellow" vlink="yellow" alink="yellow">
    <a href="tmp">DOTERAZ NAHRANE</a><br>
    <br>Pre upload vypln formular:<br>
<form action="index.php" method="post" enctype="multipart/form-data">
    <input type="file" name="userfile" id="fileToUpload">
    <input type="submit" value="Nahraj" name="submit">
</form>

<?php
// CI VOBEC BOLO POSLANE ALEBO LEN PRVE NACITANIE
if ($_POST["submit"] == "Nahraj") {
// KONTROLA NA TYP ABY SEM NEPCHALI SPAM
//if ($_FILES['userfile']['type'] == "image/jpeg") {

 // KONTROLA NA VELKOST
 if ($_FILES['userfile']['size'] > 0) {
$uploaddir = '/var/www/html/upni/tmp/';
 $uploadfile = $uploaddir . $_FILES['userfile']['name'];

 // KONTROLA NA USPESNY UPLOAD A MOVE
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
     echo "Success.\n";
  } else {
     echo "Error in upload!\n";
     if ($_FILES['userfile']['error'] == 2) { echo "File too big.\n"; }
 }
} else {
     echo "Sorry, zero size.\n";    // ZLA VELKOST SUBORU
}
//} else {
// ZLY TYP SUBORU
// echo "Sorry, not allowed.\n";
//}
}

// echo "\n\nHere is some more debugging info:";
// print_r($_FILES);
?>
</body>
</html>

Tento súbor stačí nastaviť na čítanie pre všetkých (chmod 644).
Ďalej je potrebné umožňiť prehliadanie zoznamu súborov v tmp podadresári. Pridáme sekciu s povolenými indexami v konfiguračnom súbore /etc/apache2/apache2.conf:
<Directory /var/www/html/upni/tmp/>
  Options +Indexes
</Directory>

Zmeny aplikujeme reštartom apache (root):
  apachectl -k graceful

Hotovo, na prehliadači v mobile navštívime stránku servera http, klikneme na výber súboru, následne odoslať. 


V prehliadači na počítači stiahneme z TMP adresára.


Samozrejme výpis možno viac vyšperkovať, urobiť náhľady, povoliť vstup len na heslo atď. Tu šlo o server na vnútornej sieti a rýchle riešenie.

Žiadne komentáre:

Zverejnenie komentára