Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Bilder Upload Script

Frage Entwicklung PHP

Mitglied: quba

quba (Level 1) - Jetzt verbinden

26.05.2008, aktualisiert 27.05.2008, 8902 Aufrufe, 7 Kommentare

Hallo zusammen,

da ich PHP mäßig kein Profi bin habe ich eine kleine Frage zu einem Bilder Upload Script.
Habe dieses hier im Netz gefunden und bekomme einige anpassungen nicht hin.
Vielleicht kann jemand helfen.
Hier erstmal das Script:
01.
<?  
02.
if($action){  
03.
 
04.
   // --------------------------------  
05.
   // Diverse Variablen  
06.
   // --------------------------------  
07.
 
08.
$path = "uploads/"; // Url zum Speicherordner der gro?en Bilder  
09.
$thumb_path = "uploads/thumb/"; // Url zum Speicherordner der Vorschaubilder  
10.
$config_width = "320"; // Bildbreite max. bei gro?em Bild  
11.
$config_height = "240"; // Bildhohe max. bei gro?em Bild  
12.
$config_thumb_width = "130"; // Bildbreite max. bei Vorschaubild  
13.
$config_thumb_height = "60"; // Bildhohe max. bei Vorschaubild  
14.
$resizequality = "90"; // Bildkompressionsrate 0-100  
15.
$deindomain = "http://www.domain.info/";  // unsere Domain  
16.
 
17.
if ($_FILES['userfile']['tmp_name']<> 'none')  
18.
   {  
19.
 
20.
   // --------------------------------  
21.
   // Get File Upload Info  
22.
   // --------------------------------  
23.
 
24.
         $filename = $_FILES['pic_file']['name'];  
25.
         $filetype = $_FILES['pic_file']['type'];  
26.
         $filetmp = $_FILES['pic_file']['tmp_name'];  
27.
 
28.
   // --------------------------------  
29.
   // Check file type  
30.
   // --------------------------------  
31.
 
32.
   switch ($filetype)  
33.
   {  
34.
      case 'image/jpeg':  
35.
      case 'image/jpg':  
36.
      case 'image/pjpeg':  
37.
 
38.
         $pic_filetype = '.jpg';  
39.
         break;  
40.
 
41.
      case 'image/png':  
42.
      case 'image/x-png':  
43.
 
44.
         $pic_filetype = '.png';  
45.
         break;  
46.
 
47.
      case 'image/gif':  
48.
 
49.
         $pic_filetype = '.gif';  
50.
         break;  
51.
      default:  
52.
         die("Falsches Dateiformat. Nur JPEG, GIF oder PNG erlaubt!");  
53.
   }  
54.
 
55.
   // --------------------------------  
56.
   // Generate filename  
57.
   // --------------------------------  
58.
 
59.
   srand((double)microtime()*1000000);   // for older than version 4.2.0 of PHP  
60.
 
61.
   do  
62.
   {  
63.
      $pic_filename = md5(uniqid(rand())) . $pic_filetype;  
64.
   }  
65.
   while( file_exists($path . $pic_filename) );  
66.
 
67.
 
68.
   // --------------------------------  
69.
   // Move this file to upload directory  
70.
   // --------------------------------  
71.
 
72.
   $ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';  
73.
 
74.
   if ( @$ini_val('open_basedir') != '' )  
75.
   {  
76.
      if ( @phpversion() < '4.0.3' )  
77.
      {  
78.
         die("open_basedir is set and your PHP version does not allow move_uploaded_file<br /><br />Please contact your server admin");  
79.
      }  
80.
 
81.
      $move_file = 'move_uploaded_file';  
82.
   }  
83.
   else  
84.
   {  
85.
      $move_file = 'copy';  
86.
   }  
87.
 
88.
   $move_file($filetmp, $path . $pic_filename);  
89.
 
90.
   @chmod($path . $pic_filename, 0777);  
91.
 
92.
 
93.
   // --------------------------------  
94.
   // Well, it's an image. Check its image size  
95.
   // --------------------------------  
96.
 
97.
   $pic_size = getimagesize($path . $pic_filename);  
98.
 
99.
   $pic_width = $pic_size[0];  
100.
   $pic_height = $pic_size[1];  
101.
 
102.
 
103.
   // --------------------------------  
104.
   // This image is okay, we can cache its thumbnail now  
105.
   // --------------------------------  
106.
 
107.
   if($pic_filetype != '.gif')  
108.
   {  
109.
      $gd_errored = FALSE;  
110.
 
111.
      switch ($pic_filetype)  
112.
      {  
113.
         case '.jpg':  
114.
            $read_function = 'imagecreatefromjpeg';  
115.
            break;  
116.
         case '.png':  
117.
            $read_function = 'imagecreatefrompng';  
118.
            break;  
119.
      }  
120.
 
121.
      $src = @$read_function($path  . $pic_filename);  
122.
 
123.
      if (!$src)  
124.
      {  
125.
         $gd_errored = TRUE;  
126.
         $pic_thumbnail = '';  
127.
      }  
128.
      else if( ($pic_width > $config_thumb_width) or ($pic_height > $config_thumb_height) )  
129.
      {  
130.
         // Resize it  
131.
         if ($pic_width > $pic_height)  
132.
         {  
133.
            $thumbnail_width = $config_thumb_width;  
134.
            $thumbnail_height = $config_thumb_width * ($pic_height/$pic_width);  
135.
         }  
136.
         else  
137.
         {  
138.
            $thumbnail_height = $config_thumb_height;  
139.
            $thumbnail_width = $config_thumb_height * ($pic_width/$pic_height);  
140.
         }  
141.
 
142.
         $thumbnail = @imagecreatetruecolor($thumbnail_width, $thumbnail_height);  
143.
 
144.
         $resize_function = 'imagecopyresampled';  
145.
 
146.
         @$resize_function($thumbnail, $src, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height);  
147.
      }  
148.
      else  
149.
      {  
150.
         $thumbnail = $src;  
151.
      }  
152.
 
153.
      if (!$gd_errored)  
154.
      {  
155.
         $pic_thumbnail = $pic_filename;  
156.
 
157.
         // Write to disk  
158.
         switch ($pic_filetype)  
159.
         {  
160.
            case '.jpg':  
161.
               @imagejpeg($thumbnail, $thumb_path . $pic_thumbnail, $resizequality);  
162.
               break;  
163.
            case '.png':  
164.
               @imagepng($thumbnail, $thumb_path . $pic_thumbnail);  
165.
               break;  
166.
         }  
167.
 
168.
         @chmod($thumb_path . $pic_thumbnail, 0777);  
169.
 
170.
      } // End IF $gd_errored  
171.
 
172.
   } // End Thumbnail Cache  
173.
 
174.
 
175.
  // --------------------------------------  
176.
  // OK lets resize the original picture  
177.
  // --------------------------------------  
178.
 
179.
  if($pic_filetype != '.gif')  
180.
  {  
181.
    $gd_errored = FALSE;  
182.
 
183.
    switch ($pic_filetype)  
184.
    {  
185.
      case '.jpg':  
186.
        $read_function = 'imagecreatefromjpeg';  
187.
        break;  
188.
      case '.png':  
189.
        $read_function = 'imagecreatefrompng';  
190.
        break;  
191.
    }  
192.
 
193.
    $src = @$read_function($path  . $pic_filename);  
194.
 
195.
    if (!$src)  
196.
    {  
197.
      $gd_errored = TRUE;  
198.
      $pic_resize = '';  
199.
    }  
200.
    else if( ($pic_width > $config_width) or ($pic_height > $config_height) )  
201.
    {  
202.
      // Resize it  
203.
      if ( (($pic_width / $pic_height) > ($config_width / $config_height)) )  
204.
      {  
205.
        $resize_width = $config_width;  
206.
        $resize_height = $config_width * ($pic_height/$pic_width);  
207.
      }  
208.
      else  
209.
      {  
210.
        $resize_height = $config_height;  
211.
        $resize_width = $config_height * ($pic_width/$pic_height);  
212.
      }  
213.
 
214.
      $resize = @imagecreatetruecolor($resize_width, $resize_height);  
215.
 
216.
      $resize_function = 'imagecopyresampled';  
217.
 
218.
      @$resize_function($resize, $src, 0, 0, 0, 0, $resize_width, $resize_height, $pic_width, $pic_height);  
219.
    }  
220.
    else  
221.
    {  
222.
      $resize = $src;  
223.
    }  
224.
 
225.
    if (!$gd_errored)  
226.
    {  
227.
      $pic_resize = $pic_filename;  
228.
 
229.
      // Write to disk  
230.
      switch ($pic_filetype)  
231.
      {  
232.
        case '.jpg':  
233.
          @imagejpeg($resize, $path . $pic_resize, $resizequality);  
234.
          break;  
235.
        case '.png':  
236.
          @imagepng($resize, $path . $pic_resize);  
237.
          break;  
238.
      }  
239.
 
240.
      @chmod($path . $pic_resize, 0777);  
241.
 
242.
    } // End IF $gd_errored  
243.
 
244.
  } // End Picture Resize  
245.
 
246.
      echo "Datei ist auf dem Server! <br><br>";  
247.
      echo "Url des gro?en Bildes: <a href=\"$deindomain$path$pic_filename\" target=\"_blank\">".$deindomain.$path.$pic_filename;  
248.
     echo "</a> <br><img src=\"$deindomain$path$pic_filename\"><br><br>";  
249.
      echo "Url des Vorschaubildes: <a href=\"$deindomain$thumb_path$pic_filename\" target=\"_blank\">".$deindomain.$thumb_path.$pic_filename;  
250.
     echo "</a> <br><img src=\"$deindomain$thumb_path$pic_filename\">";  
251.
 
252.
   }  
253.
} else { ?>  
254.
 
255.
<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>">  
256.
<input type="hidden" name="MAX_FILE_SIZE" value="40000000">  
257.
<br>  
258.
<strong>File Upload</strong> <br>  
259.
<br>  
260.
<input name="pic_file" type="file" size=50>  
261.
<br>  
262.
<br>  
263.
<input type="submit" name="action" value="Speichern">  
264.
</form>  
265.
<?  
266.
 }  
267.
   // -----------------------------------------  
268.
   // Das Script kann unter Verwendung  
269.
   // dieses Vermerks uneingeschrankt  
270.
   // genutzt / verandert werden.  
271.
   //  &copy; www.marc-gutt.de  
272.
   // -----------------------------------------  
273.
?>  
274.
 
Meine Frage nun:
1. soll der Dateiname des Bildes bestehen bleiben
2. wenn ein Bild mit gleichem Dateinamen hochgeladen wird, soll das vorhandene nicht gelöscht werden, sondern "hochgezählt" werden. Bsp.: Thema_A.jpg Thema_A(1).jpg Thema_A(2).jpg
3. Soll auf der Upload-Seite eine Übersicht über die hochgeladenen Bilder gegeben werden die bspw. dem Suchkriterium Thema_A entsprechen; über diesen Überblick kann auch ein Bild gelöscht werden.

Ich weiß, es ist ein wenig viel auf einmal,
aber falls jmd. mir helfen kann wäre ich sehr dankbar.

Vielen Dank!

Grüße
quba

[EDIT masterG 26.05.2008 15:37]:
Ich habe mir erlaubt den Code in einen Codeblock zu packen!
Mitglied: masterG
26.05.2008 um 15:39 Uhr
Ich versteh deine Fragen nicht ganz. Das mit der Suche schon aber den Rest nicht!

masterG
(Moderator)
Bitte warten ..
Mitglied: quba
26.05.2008 um 16:05 Uhr
zu 1. Beim hochladen wird die Datei mit einem hashwert gespeichert, es soll aber der Dateiname bestehen bleiben.

zu 2. Bei einem gleichen Dateinamen soll die vorhandene Datei NICHT überschrieben werden, sondern es soll fortlaufend "hochgezählt" werden Bsp: wenn Bild.jpg vorhanden ist,
soll der Dateiname auf Bild(1).jpg gesetzt werden usw.

hoffe die Fragen korrekt gestellt zu haben.

Gruß
quba
Bitte warten ..
Mitglied: masterG
26.05.2008 um 17:24 Uhr
1)Zeile 62. Dort musst du es nur entsprechend ändern das der Name behalten werden soll.
2)Muss ich mir das Script genauer anschauen!

masterG
Bitte warten ..
Mitglied: quba
26.05.2008 um 17:41 Uhr
1) Ahhh Danke, ich muss wohl den Wald vor lauter Bäumen nicht gesehen haben.

2) und 3) Schonmal im voraus vielen Dank für die Hilfe.

quba
Bitte warten ..
Mitglied: Dani
26.05.2008 um 20:57 Uhr
Abend,
ich will mal dazwischen funkten. ^^
es ist theoretisch nicht möglich, dass es 2 Bilder gibt die den gleichen MD5 Hashwert im Dateinamen hat. Darum macht man sowas....
Also 1 und 2 ist ein Wiederspruch in sich.

Achja...nettes Script, aber dir fehlt eindeutig der Durchblick. Ich würde es mal mit was einfachen probieren.


Gruß
Dani
Bitte warten ..
Mitglied: quba
26.05.2008 um 21:01 Uhr
Nabend,

1 und 2 sind eigtl kein widerspruch.
Der "Stammname" ist ja dann immer gleich Name.jpg, Name(1).jpg usw. somit sind die Bilder dann einzeln wieder einfacher einander zuzuordnen welche Bilder zu welchen Themen gehören
Bitte warten ..
Mitglied: masterG
27.05.2008 um 13:43 Uhr
Damit der Rest das auch weiß! Ich habe mit quba über PN noch geredet und ich habe ihm ein netters uploadscript gegeben:
http://www.php-space.info/bilder-upload-script/ .

Hier mit ist der Thread gelöst und geschlossen!

masterG
Bitte warten ..
Ähnliche Inhalte
Administrator.de Feedback
Diskussionsrunde: Bilder-Upload innerhalb eines Kommentars
gelöst Frage von FrankAdministrator.de Feedback26 Kommentare

Hallo Administrator User, auch hier brauche ich etwas Feedback von Euch. Ich will in der kommenden Woche den Bilder-Upload ...

PHP
Bilder upload, automatisch resizen und URL in PHPBB einfügen
Frage von HenerePHP

Hallo zusammen, ich betreibe ja ein Motorradforum welches in Kürze auf PHPBB umziehen soll. Wir hatten bis jetzt unter ...

Linux Tools
Bash Script contains Bilden und nutzen
gelöst Frage von OIOOIOOIOIIOOOIIOIIOIOOOLinux Tools19 Kommentare

Tach, habe meinem Script ein paar contains verleihen wollen. Irgend wie bekomme ich nun komische Ergebnisse: nach dem Ich ...

Batch & Shell
Power Shell Script zu Bild Suche
gelöst Frage von akoch85Batch & Shell10 Kommentare

Hallo liebe Mitglieder, ich brauche dringend eure Hilfe. Problemstellung: 1.Bilder anhand des Namens z.B. "B1876GH.jpg" aus einem Ordner herausziehen ...

Neue Wissensbeiträge
Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 2 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 2 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 14 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 21 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...