Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Auto upload na ImageShack
Forum PHP.pl > Forum > Przedszkole
Kredka29
Witam, poszukuję jakiegoś skrypty, który umożliwi użytkownikom mojej strony upload na imageshack.
Tzn. byłoby u mnie pole typu file i po kliknięciu wyślij, wraz z innymi danymi powinien wysyłać się formularz.
A do mnie nie docierałaby ścieżka z ich dysku, tylko link do tego pliku z np. imageshack.

Jest taka możliwość?
tvister
Chyba o to chodziło:
http://www.rohitab.com/discuss/index.php?showtopic=29759
Kredka29
Tak, widziałem tą stronę, tyle że nie wiem jak tego użyć sciana.gif
Blame
Ale czego w tym nie rozumiesz? Przecież nie dość że nie jest to trudne to jeszcze jest opisane. No ale niech stracę, wyjaśnię nieco:
Pierwsza część kodu zawiera funkcje odpowiedzialne za kolejno: rozpoznanie mime obrazka i przesłanie takowego do IS. To wszystko domyślnie powinniśmy umieścić w tym samym pliku z rozszerzeniem .php w którym będziemy mieć formularz uploadu.
Druga części kodu to w/w formularz. Pozwolę sobie zacytować winksmiley.jpg
  1. <html>
  2. <?php if(!isset($_POST['sub'])){ ?>
  3. <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  4. Enter path to file: <input type="text" name="test" /><br />
  5. <input type="submit" name="sub" />
  6. </form>
  7. <?php } else {
  8. echo imageshackUpload($_POST['test']);
  9. }?>
  10. </html>

Z kolei ten kod sprawdza czy formularz nie został już wysłany, jeśli nie to wyświetla pole tekstowe, w którym musimy wpisać ścieżkę do naszego obrazka. Po wciśnięciu przycisku skrypt przechodzi do wspomnianych wyżej funkcji i tyle.

PS. Jeśli chcesz mieć możliwość wybrania sobie obrazka z dysku to możesz spróbować zmienić input type z "text" na "file" chociaż nie jestem pewny czy w tedy skrypt zadziała.
Kredka29
Tak więc właśnie, rozumiem że to ma być w jednym pliku?
Na localu wyświetla się pusta strona...

Odświeżam...
Niżej na tamtym forum inny user podał jeszcze coś takiego:
Tyle że wyświetla się Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in /home/myfreefarm/domains/myfreefarm.hostil.pl/public_html/upload.php on line 19
.imageshack.us///

  1. <?php
  2. class ImageShack {
  3. static function mimeType($filename){
  4. $ext = pathinfo($filename);
  5. $ext = $ext['extension'];
  6. switch($ext) {
  7. case "bmp": return "image/bmp"; break;
  8. case "gif": return "image/gif"; break;
  9. case "jpe": return "image/jpeg"; break;
  10. case "jpeg": return "image/jpeg"; break;
  11. case "jpg": return "image/jpeg"; break;
  12. case "png": return "image/png"; break;
  13. case "swf": return "application/x-shockwave-flash"; break;
  14. case "tif": return "image/tiff"; break;
  15. case "tiff": return "image/tiff"; break;
  16. default: return ""; break; }}
  17. static function upload($file){
  18. $filename = $file['name'];
  19. $binarydata = file_get_contents($file['tmp_name']);
  20. $sock = @fsockopen("www.imageshack.us", 80, $errno, $errstr, 30);
  21. $mimetype = self::mimeType($filename);
  22. $AaB03x = "--AaB03x\r\n";
  23. $AaB03x .= "content-disposition: form-data; name=\"uploadtype\"\r\n\r\n";
  24. $AaB03x .= "on\r\n";
  25. $AaB03x .= "--AaB03x\r\n";
  26. $AaB03x .= "content-disposition: form-data; name=\"fileupload\"; filename=\"".basename($filename)."\"\r\n";
  27. $AaB03x .= "Content-Type: $mimetype\r\n";
  28. $AaB03x .= "Content-Transfer-Encoding: binary\r\n\r\n";
  29. $AaB03x .= "$binarydata\r\n";
  30. $AaB03x .= "--AaB03x--\r\n";
  31. $header = "POST / HTTP/1.1\r\n";
  32. $header .= "Host: www.imageshack.us\r\n";
  33. $header .= "Content-type: multipart/form-data, boundary=AaB03x\r\n";
  34. $header .= "Content-Length: ".strlen($AaB03x)."\r\n\r\n";
  35. $header .= $AaB03x; fwrite($sock, $header);
  36. $response = ''; while (!feof($sock)) {
  37. $response .= fgets($sock, 128); }
  38. fclose($sock);
  39. preg_match("/location: http:\/\/img\d{1,3}\.imageshack\.us\/content\.php\?page=done&l=(img\d{1,3})\/(\d{1,4})\/(\w+.\w+)/i", $response, $matches);
  40. return "{$matches[1]}.imageshack.us/{$matches[1]}/{$matches[2]}/{$matches[3]}";}}
  41.  
  42. ?>
  43.  
  44. <html>
  45. <?php if(!isset($_POST['sub'])){ ?>
  46. <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  47. Enter path to file: <input type="file" name="name" /><br />
  48. <input type="submit" name="sub" />
  49. </form>
  50. <?php } else {
  51. echo ImageShack::upload($_FILES['image']);
  52. }?>
  53. </html>


Czy może ktoś mi pomóc?

Up
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.