kuva netistä omalle koneelle headereilla

header

Tavoite: saada selain ehdottamaan kuvan tallentamista suoraan lomakkeen nappia klikkaamalla.
Tiedän toki, että kuvat voi tallentaa myös esim. hiiren kakkosnäppäimen kautta, mutta nyt olisi tarkoitus saada tallennetuksi näin.

Miksi seuraava ei toimi ainakaan localhostilla tai mbnetin servereillä?

$tulosivu = $_SERVER['HTTP_REFERER']; // katsotaan miltä sivulta tultiin, mikäli selain sen kertoo
$lataa = trim($_POST['lataa']);
$tulo = explode("/", $tulosivu);
$polku = "$tulo[0]//$tulo[1]$tulo[2]/$tulo[3]/$tulo[4]/$tulo[5]/$tulo[6]";

// alla oleva on melkein suora kopio joltain foorumilta vuodelta -05, ja tämän "pitäisi" toimia
if (!empty($lataa)) {
$fileDir = "$polku/tiedostot"; // Määritellään polku, ei kauttaviivaa loppuun
$fileName = $lataa; // Tiedostonimi
$fileString=$fileDir.'/'.$fileName; // Polun ja tiedostonimen yhdistelmä
// Muunnetaan tiedostonimet IE:lle kelvollisiksi
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
$fileName = preg_replace('/\./', '.', $fileName, substr_count($fileName, '.') - 1);
}
header("Cache-Control: "); // Jätetään tyhjäksi IE-ongelmien välttämiseksi
header("Pragma: "); // Jätetään tyhjäksi IE-ongelmien välttämiseksi
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$fileName."\"");
header("Content-length:".(string)(filesize($fileString)));
sleep(1);
fpassthru($fdl);
}

Tällä saan Firefoxissa avautumaan "tallenna nimellä"-valikon, mutta isokin tiedosto tulee koneelle selvästi viallisena alle kilotavun kokoisena, eikä sitä saa auki. IE tai Opera eivät tee mitään. $fileString tulostaa aivan oikean ja toimivan osoitteen muotoa "http://*.*.*/*/*/*/*/tiedostot/kuva.jpg", jossa kuva oikeastikin on.

Olen kokeillut myös näitä yhtä heikolla menestyksellä:
1. header ("Content-Type: image/jpeg");
header ("Content-Disposition: attachment; filename=".($lataa).";");
header("Content-Length: ".filesize($lataa));
header("Connection: Close");
readfile($file);
exit;

2. $lataa = $tulosivu.$lataa;
header("Content-type: image/jpeg");
header("Content-Disposition: attachment; filename=\"" . ($lataa) . "\"");

3

669

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • keksa1

      • header

        Kokeilin ensin noita esimerkkejäsi, en saanut niilläkään toimimaan oikein. Seuraavaksi muutin koodin tällaiseksi:

        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n");
        header ("Content-Type: image/jpg");
        header ("Content-Disposition: attachment; filename=".($lataa).";"); // $lataa tulee lomakkeelta
        header("Content-Length: ".filesize($lataa));
        header("Connection: Close");
        @readfile($fileString);
        exit;

        Nyt tiedoston koko on suunnilleen oikea, mutta kuvaa ei saa auki: "Valokuvavalikoima ei voi avata tätä kuvaa tai videota. Tiedosto on vahingoittunut." Virtualdubin heksaeditorilla katsottuna tiedosto ei ole pelkkää nollaa täynnä. Mukana on myös jotain selväkielistä valitusta jo lähetetyistä headereista php-tiedoston kommentilla piilotetulla rivillä. Mikähän tässä voisi olla vielä pielessä?


    • header

      IE ja Opera eivät toimi kuvien poistossa sen takia, ettei lomakkeella välity tieto eteenpäin. Tämän takia ajattelin kokeilla sessiota. Siinä tuli sitten uusi ongelma, eli missä kohdassa session arvo syötetään, että siihen tulee vain valittu tiedoston nimi?

      while ($file = readdir($dir_handle))
      {
      if($file!="." && $file!="..") // ei tulosteta pelkkiä pisteitä
      {
      if (strpos($file, '.jpg') >0)
      {
      echo '[tr][td][a href="'.$file.'" target="oikea"]'.$file.'[/a][/td][td][input type="image" src="lataa.gif" name="lataa" value="'.$file.'" '.$_SESSION['kuva'] = $file.'][/td][td][input type="image" src="delete.gif" name="kuva2" value="'.$file.'"][/td][/tr]';
      }
      }
      }

      Ainakaan tuo ei tuota odotettua tulosta, vaan session sisällöksi tulee kansiossa viimeisenä oleva tiedosto. Jos taas käytän $_SESSION['kuva'][] , niin silloinhan sessioon tulee kaikki kansiossa olevat tiedostot. Missä kohdassa ja muodossa siis session sisältöön pitäisi kirjoittaa?

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Porvarimediat paniikissa demareiden huiman kannatuksen vuoksi

      Piti sitten keksiä "nimettömiin lähteisiin" perustuen taas joku satu. Ovat kyllä noloja, ja unohtivat sen, että vaalit
      Maailman menoa
      86
      6023
    2. KATASTROFI - Tytti Tuppurainen itse yksi pahimmista kiusaajista!!!

      STT:n lähteiden mukaan SDP:n eduskuntaryhmän puheenjohtaja Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti
      Maailman menoa
      325
      5201
    3. Huono päivä

      Tänään on ollut tosi raskas päivä töissä. Tekis mieli itkeä ja huutaa. En jaksa just nyt mitään. Minä niin haluaisin ja
      Ikävä
      20
      2658
    4. Mikä siinä on ettei persuille leikkaukset käy?

      On esitetty leikkauksia mm. haitallisiin maataloustukiin, kuin myös muihin yritystukiin. Säästöjä saataisiin lisäksi lei
      Maailman menoa
      51
      2605
    5. Lääppijä Lindtman jäi kiinni itse teosta

      Lindtman kyselemättä ja epäasiallisesti koskettelee viestintäpäällikköä. https://www.is.fi/politiikka/art-2000011780852
      Maailman menoa
      83
      1842
    6. Juuri nyt! Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti

      Ai että mä nautin, Tytti erot vireille! "Käytös on kohdistunut avustajia ja toisia kansanedustajia kohtaan, uutisoi STT
      Maailman menoa
      103
      1669
    7. Onko kaivattusi

      liian vetovoimainen seksuaalisesti?
      Ikävä
      111
      1531
    8. Puolen vuoden koeaika

      Voisi toimia meillä. Ensin pitäis selvittää "vaatimukset" puolin ja toisin, ennen kuin mitään aloittaa. Ja matalalla pro
      Ikävä
      17
      1521
    9. seurakunnan talouspäällikön valinta meni perseelleen

      Nyt on ihan pakko kyseenalaistaa tuo Kemijärven seurakunnan päätös talouspäälliköstä. Valitulla ei ole talouspuolen osaa
      Kemijärvi
      120
      1420
    10. Olen ihmetellyt yhtä asiaa

      Eli miksi naiset ovat niin pelokkaan tai vaitonaisen oloisia minun seurassani. Se sai minut ajattelemaan, että olen epäm
      Ikävä
      133
      1393
    Aihe