Autor Zpráva
serii
Profil *
Dobrý den,večer.
po dlouhém přemejšlení jsem si řekl,že se skusím naučit..ne,spíše pochopit princip hromadného uploadu obrázků a následně zápis do db.
Našel jsem si schválně jeden php script,který má div o nějaké velikost,a obrázky se tam přesouvají.
Tady přihládám zdrojový kod.
<?php

if(isSet($_POST['raw']) && is_string($_POST['raw'])) {
  if(get_magic_quotes_gpc()) {
    $_POST['raw'] = stripSlashes($_POST['raw']);
  }

  // data in "data" URL scheme (http://tools.ietf.org/html/rfc2397)
  $images = array();
  preg_match_all(
    '#<img\s+src="data:image/(?P<extension>[^;]+);base64,(?P<data>[^"]+)"[^>]*>#i',
    $_POST['raw'],
    $images
  );

  $timestamp = time();
  foreach($images['extension'] as $order => $extension) {
    file_put_contents(
      "galerie/$timestamp#$order.$extension",
      base64_decode($images['data'][$order])
    );
  }
}

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>Multiupload</title>
  <style>
  #tabulka {
    background:#CCCCCC;
    width:100%; height:100px;
  }
  #tabulka img {
    max-height:100px;
  }
  </style>
  <script type="text/javascript">
  window.addEventListener("load", function(evt) {
    document.forms["formular"].addEventListener("submit", function(evt) {
      var form = evt.target,
          dataContainer = document.getElementById("tabulka");
      form.elements["raw"].value = dataContainer.innerHTML;
    }, false);
  }, false);
  </script>
  </head>


  <body>
    <div id="tabulka" contenteditable></div>

    <form name="formular" method="post">
      <input type="hidden" name="raw">
      <input type="submit" value="Uložiť">
    </form>
  </body>
</html>

všechno jakoby chápu až na jeden kus kodu a to tenhle
 preg_match_all(
    '#<img\s+src="data:image/(?P<extension>[^;]+);base64,(?P<data>[^"]+)"[^>]*>#i',
    $_POST['raw'],
    $images
  );
co to prosím znamená? trochu jsem to rozluštil,a asi to nejspíš generuje ten obrázek..ale například kde vezmu název toho obrázku když ho nebudu chtít přejmenovat?
Děkuji za vaše rady.
Oison
Profil
Asi jde o tohle - http://doc.nette.org/cs/default-helpers#toc-datastream
serii
Profil *
Oison:
nojo,ale problém je v tom,že já nette nepoužívám..takže mě je tohle k prdu..
Camo
Profil
dovolím si to kopnúť hore, pretože už by aj mňa zaujímalo, či je možné z toho base64 reťazca dostať názov súboru. Nikto nevie?
PostCC
Profil
Camo:
Nelze. V tom BASE64 řetězci není nic jiného než surová data obrázkového streamu. Tedy přímo to, co je následně interpretováno na displeji. Protože se jedná o inline zápis přímo v HTML, není žádný název souboru potřeba. Jediné rozšiřující informace, které ovšem nejsou zakódovány přímo v BASE64 jsou mime typ obsahu a kódování. Doporučuji vyhledat si např. klíčová slova "inline image" k pochopení problematiky.
Camo
Profil
PostCC:
No a ako by sa dal takýto script riešiť tak aby som získal meno súboru. Sa mi páči to presúvanie obrázkov.
Či jedine si ho vypýtať od usera?
serii
Profil *
já jsem to nakonec vyřešil tak,že jsem ty obrázky přejmenoval na počet,takže pokud tam hodím 10 obrázků tak se budou počítat podle pořadí..tudíž 0-9..
a pak jsem dal možnost ty obrázky popř přejmenovat podle uživatele..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: