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

Mitglied: quba

quba (Level 1) - Jetzt verbinden

26.05.2008, aktualisiert 27.05.2008, 8960 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
Webentwicklung

CGI-Upload-Script hinter nginx-Reverse-Proxy

gelöst Frage von DexthaWebentwicklung1 Kommentar

Hallo, ich tausche gerade meinen Apache-Reverse-Proxy gegen einen nginx-Reverse-Proxy ab. Ich habe auf dem Applikationsserver eine Upload-Formular, welches mit ...

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 ...

Entwicklung

Google Bildersuche mit Bild-Upload per Skript benutzen und URLs auslesen

gelöst Frage von Jens4everEntwicklung3 Kommentare

Moin zusammen, folgende Situation: Wie könnte man Bilder in einem Ordner nach und nach automatisiert per Sktipt zu Google ...

Entwicklung

Automatisierter FTP Upload

Frage von Sahin-FraEntwicklung9 Kommentare

Hallo, ich suche ein kostenfreies Tool womit ich automatisierte FTP Übertragungen durchführen kann. Vielen Dank!

Neue Wissensbeiträge
iOS
WatchChat für Whatsapp
Tipp von Criemo vor 20 StundeniOS

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 1 TagiOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 3 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 3 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Heiß diskutierte Inhalte
Exchange Server
Exchange Server 2010: Keine Eingehenden E-MAils
gelöst Frage von gabeBUExchange Server17 Kommentare

Hallo Zusammen Ich habe das kurzen auf dem Exchange 2010 Server das Problem, dass ich keine externen E-Mails mehr ...

Server
Server in zwei verschiedene Netzwerke einbinden
gelöst Frage von BennyFServer13 Kommentare

Hallo zusammen, bei uns im Haus sind im Erdgeschoss die Geschäftsräume und ab dem 1. Stock sind unsere privaten ...

Windows Netzwerk
Kerio. Kann keine Mails empfangen aber senden. Wer ist schuld. Kerio oder Windows domäne?
Frage von frosch2Windows Netzwerk13 Kommentare

Hallo, es existiert ein Problem bei uns mit dem mailen. Alle bestehenden Nutzer können mailen. Raus wie rein. Neuen ...

Netzwerkmanagement
Ticketsystem für eine Kommune gesucht
gelöst Frage von akovisNetzwerkmanagement11 Kommentare

Ich suche aktuell ein Ticketsystem für eine Kleinstadt von 13000 Einwaohnern. Das System soll alle Anfragen aus verschiedenen Kanälen ...