Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kopiowenie plików z innego serwera
Forum PHP.pl > Forum > Gotowe rozwiązania
Wasiquard
Potrzebuję script, który będzie mi kopiował pliki jpg (tapetki) z innego serwera na mój serwer. Myślałem, że nie będzie problemu. Jednak nawet funkcja file_exists() zwraca FALSE. NIe wiem, czy użycie mojej funkcji upload() jest na miejscu.

  1. <?
  2. function upload($plik, $dir=0, $typ=1, $new_name=0, $roz=0){
  3. $plik_temp = $plik[tmp_name];
  4. $plik_name = $plik[name];
  5. $plik_size = $plik[size];
  6. $plik_type = $plik[type];
  7. $plik_error = $plik[error];
  8. if($pliku_error > 0){
  9. switch($plik_error){
  10. case 1: print&#092;"Rozmiar pliku przekroczył maksymalną wartość\"; break;
  11. case 2: print&#092;"Rozmiar pliku przekroczył wartość max_file_size\"; break;
  12. case 3: print&#092;"Plik wysłany tylko częściowo\"; break;
  13. case 4: print&#092;"Nie wysłano żadnego pliku\"; break;
  14. }
  15. }
  16. if(@is_uploaded_file($plik_temp)){
  17. $wiersz = explode(&#092;";\", $typ);
  18. for($i=0;$i<count($wiersz);$i++){
  19. if(($wiersz[$i]!=1 AND $wiersz[$i]==$plik_type) OR ($wiersz[$i]==1 AND $wiersz[$i]!=$plik_type)){
  20. $dobry_typ = 1;
  21. }
  22. }
  23. if($dobry_typ!=1){
  24. print&#092;"<br />Zły format pliku <i>\".$plik_name.\"</i> (<i>\".$plik_type.\"</i>)! Musisz wybrać plik <i>\".$typ.\"</i>\";
  25. return;
  26. }
  27. if(!file_exists($dir))
  28. mkdir(&#092;"/\".$dir, 0777);
  29. if($dir) $dir = $dir.&#092;"/\"; else $dir = \"\";
  30. $lokalizacja = $dir.$plik_name;
  31. if(@move_uploaded_file($plik_temp, $lokalizacja)){
  32. print&#092;"Plik <i>\".$plik_name.\"</i> został dodany!\";
  33. if($new_name){
  34. print&#092;"<br />n\";
  35. if($roz)
  36. $roz = &#092;".\".$roz;
  37. else
  38. unset($roz);
  39. if(@rename($lokalizacja, $dir.$new_name.$roz)){
  40. print&#092;"Zmieniono nazwę pliku na <i>\".$new_name.$roz.\"</i>!\";
  41. } else {
  42. print&#092;"Nie można było zmienić nazwy pliku <i>\".$plik_name.\"</i> na <i>\".$new_name.$roz.\"</i>!<br />\";
  43. if(@unlink($lokalizacja))
  44. print&#092;"Usunięto plik <i>\".$plik_name.\"</i>!\";
  45. else
  46. print&#092;"Plik <i>\".$plik_name.\"</i> nie został usunięty!\";
  47. }
  48. }
  49. } else {
  50. if(@copy($plik_temp, $lokalizacja)){
  51. print&#092;"Plik został dodany przy drugiej próbie!\";
  52. } else {
  53. print&#092;"Plik nie został skopiowany!\";
  54. }
  55. }
  56. } else {
  57. print&#092;"Nie wysłano pliku!\";
  58. }
  59. print&#092;"<br />n\";
  60. }
  61. $nr = 1;
  62. if($_POST[dir]){
  63. while(file_exists(&#092;"http://www.amimewallpapers.com/wallpapers/\".$_POST[dir].\"/f_\".$nr.\"_1024.jpg\")){
  64. upload(&#092;"http://www.amimewallpapers.com/wallpapers/\".$_POST[dir].\"/f_\".$nr.\"_1024.jpg\", $_POST[dir]);
  65. $nr++;
  66. }
  67. $nr -= 1;
  68. print&#092;"<br />\";
  69. if($nr>0)
  70. print&#092;"Ściągniętych tapet z katalogu <b>\".$_POST[dir].\"</b>: \".$nr;
  71. else
  72. print&#092;"Nie pobrano żadnej tapety z katalogu: \".$_POST[dir].\".\";
  73. }
  74. ?>
soldat
Nie jestem pewien, ale file_exists działa chyba tylko w odniesieniu do "własnego" serwera. Spróbuj może sprawdzić istnienie pliku w jakiś inny sposób - ja kiedyś używałem do tego getimagesize - bo przy okazji sprawdzałem sobie czy wymiary mi odpowiadają
  1. <?php
  2. if ($im=@getimagesize ..... 
  3. ?>


Ale jak juz pisałem pewien nie jestem worriedsmiley.gif

EDIT : a jak zachowuje się serwer (jakieś błędy ?)
Wasiquard
file_exists zwraca FALSE. Żadnych błędów. getimagesize z tego co wiem sporo obciąża serwer. A może zadziała taki kod, lekko zmodyfikowany, bo jakoś sobie już zaczyna radzić:
  1. <?
  2. $nr = 1;
  3. if($_POST[dir]){
  4. $link = &#092;"http://www.animewallpapers.com/wallpapers/\".$_POST[dir].\"/\";
  5. while($link_plik = $_POST[dir].&#092;"_\".$nr.\"_1024.jpg\" AND $czytaj_plik = fopen($link.$link_plik, \"r\")){
  6. $plik = file($czytaj_plik);
  7. fclose($czytaj_plik);
  8.  
  9. $nr++;
  10. }
  11. $nr -= 1;
  12. print&#092;"<br />\";
  13. if($nr>0)
  14. print&#092;"Ściągniętych tapet z katalogu <b>\".$_POST[dir].\"</b>: \".$nr;
  15. else
  16. print&#092;"Nie pobrano żadnej tapety z katalogu: \".$_POST[dir].\".\";
  17. }
  18. ?>
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-2024 Invision Power Services, Inc.