Foto's worden niet weergegeven.
Ik heb de onderstaande code, maar als er een spatie in de foto zit dan laat de pagina de foto niet zien en toont hij een kruis, iemand een idee?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<div class="blogentry"><h2>Fotoalbum</h2>
<table border="0" cellspacing="0" cellpadding="3" width="100%">
<?
$dir = dir("data/fotoalbum/fotos");
$mappen = array();
while($map = $dir->read()){
if(is_dir("data/fotoalbum/fotos/".$map) && strlen($map) >
2){
$mappen[] = $map;
} }
$num_cols = 3;
$i = 0;
foreach ( $mappen as $item )
{
$imglist='';
$img_folder = "data/fotoalbum/fotos/$item/";
mt_srand((double)microtime()*1000);
$imgs = dir($img_folder);
while ($file = $imgs->read()) {
if (eregi("gif", $file) || eregi("jpg", $file) ||eregi("png", $file)) $imglist .= "$file ";
} closedir($imgs->handle);
$imglist = explode(" ", $imglist);
$no = sizeof($imglist)-2;
$random = mt_rand(0, $no);
$image = $imglist[$random];
echo $i++%$num_cols==0 ? '</tr><tr>' : '';
echo '<td align=center valign=top><h3>'.$item.'</h3><a href="?page=7a&id='.$item.'"><img src="'.$img_folder.''.$image.'" class="imagefloat2"></a></td>';
}
$bestand = "data/stats/fotoalbumbezoekers.txt";
if(!is_file($bestand))
{
$fp = fopen($bestand, 'a');
fwrite($fp, "<?\\n//");
fclose($fp);
chmod($bestand, 0666);
}
$con = file_get_contents($bestand);
$st = substr_count($con, ";");
if(strpos($con, $_SERVER['REMOTE_ADDR']) === FALSE)
{
$fp = fopen($bestand, 'a');
fwrite($fp, $_SERVER['REMOTE_ADDR'].";");
fclose($fp);
$st++;
}
unset($con);
?>
</tr>
</table></div>
<table border="0" cellspacing="0" cellpadding="3" width="100%">
<?
$dir = dir("data/fotoalbum/fotos");
$mappen = array();
while($map = $dir->read()){
if(is_dir("data/fotoalbum/fotos/".$map) && strlen($map) >
2){
$mappen[] = $map;
} }
$num_cols = 3;
$i = 0;
foreach ( $mappen as $item )
{
$imglist='';
$img_folder = "data/fotoalbum/fotos/$item/";
mt_srand((double)microtime()*1000);
$imgs = dir($img_folder);
while ($file = $imgs->read()) {
if (eregi("gif", $file) || eregi("jpg", $file) ||eregi("png", $file)) $imglist .= "$file ";
} closedir($imgs->handle);
$imglist = explode(" ", $imglist);
$no = sizeof($imglist)-2;
$random = mt_rand(0, $no);
$image = $imglist[$random];
echo $i++%$num_cols==0 ? '</tr><tr>' : '';
echo '<td align=center valign=top><h3>'.$item.'</h3><a href="?page=7a&id='.$item.'"><img src="'.$img_folder.''.$image.'" class="imagefloat2"></a></td>';
}
$bestand = "data/stats/fotoalbumbezoekers.txt";
if(!is_file($bestand))
{
$fp = fopen($bestand, 'a');
fwrite($fp, "<?\\n//");
fclose($fp);
chmod($bestand, 0666);
}
$con = file_get_contents($bestand);
$st = substr_count($con, ";");
if(strpos($con, $_SERVER['REMOTE_ADDR']) === FALSE)
{
$fp = fopen($bestand, 'a');
fwrite($fp, $_SERVER['REMOTE_ADDR'].";");
fclose($fp);
$st++;
}
unset($con);
?>
</tr>
</table></div>
uhm de eerste oplossing wat bij mij in me gedachte komt is om op regel 28 een str_replace te plaatsen om de var $image.
str_replace(' ', '%20', $image);
dit haalt de spaties eruit en plaatst %20 ervoor in de plaats.
str_replace(' ', '%20', $image);
dit haalt de spaties eruit en plaatst %20 ervoor in de plaats.
Als je het echt goed wilt doen moet je alle spaties vervangen door underscores. Spaties horen gewoon niet in bestandsnamen.
Eddy Bisschops op 18/01/2012 15:48:31:
Als je het echt goed wilt doen moet je alle spaties vervangen door underscores. Spaties horen gewoon niet in bestandsnamen.
Ik nam aan dat de bestanden al zo waren benoemd, dan kan ik de spatie wel door een underscore laten vervangen maar toont de pagina nog steeds niets.
Ik denk dat zijn Eddy zijn opmerking niet over jouw post was maar die van de starter. Jouw oplossing is voor de time being het meest eenvoudig. Verder ben ik het met Eddy eens dat spaties in bestandsnamen niet echt nice zijn.
Kees Schepers op 18/01/2012 15:58:00:
Ik denk dat zijn Eddy zijn opmerking niet over jouw post was maar die van de starter. Jouw oplossing is voor de time being het meest eenvoudig. Verder ben ik het met Eddy eens dat spaties in bestandsnamen niet echt nice zijn.
Ahaa, ja vind ik ook wel hoor. Ik gelijk in de strijd :P (A)
Bedankt voor de reacties, ik heb al jullie advies opgevolgd.
Eddy Bisschops op 18/01/2012 15:48:31:
... Spaties horen gewoon niet in bestandsnamen.
Noem me ouderwets ...
wat mij betreft horen bestandsnamen te bestaan uit letters, cijfers en underscores.
Eventueel liggend streepje en punt (uiteraard een punt voor de extensie).
Microsoft denkt daar duidelijk anders over.
Gewijzigd op 19/01/2012 10:18:15 door Kris Peeters
Als ik files weg schrijf op een linux filesysteem gebruik ik niet eens extensies. Alleen maar lastig, je kunt mime-type toch uitlezen met finfo functies .e.d. Veel mensen slaan uit gewenning bestanden op met extensie.
Voorbeeld, voor een aantal shops waarvoor ik een engine in PHP geschreven heb, kun je per product foto's uploaden. Als een upload succesvol is maak ik in de 'productimages' tabel een record aan en de record id wordt de volledige bestandsnaam. In de tabel sla ik ook mime-type op. Dit kun je altijd nog wel on-load opvragen maar kost meer resources.
Voorbeeld, voor een aantal shops waarvoor ik een engine in PHP geschreven heb, kun je per product foto's uploaden. Als een upload succesvol is maak ik in de 'productimages' tabel een record aan en de record id wordt de volledige bestandsnaam. In de tabel sla ik ook mime-type op. Dit kun je altijd nog wel on-load opvragen maar kost meer resources.




