Ik gebruik een fotoboek.
Hiervan wil ik de link waar de foto naar verwijst (normaal grotere foto) veranderen naar een document
(.doc of .docx)
De naam van het document is hetzelfde als van de foto.
Op zich lukt dat allemaal prima zolang ik een vaste extensie heb.
Alleen kan het document zowel een .doc zijn als een docx.
Ik moet nu dus met uitsluitend de bekende naam in de map waar de documenten zich bevinden
achterhalen wat de extensie is van dat bestand.
Het gaat om de laatste regel in de code.
Waar dus de .doc vervangen moet worden door een variabele die .doc of .docx kan bevatten.
Iemand die me op weg kan helpen?


// bepaal de extensie van de foto (jpg, jpeg, gif,png) 
$extens = pathinfo($relativePath, PATHINFO_EXTENSION);
// bepaal de positie van extensie (woord kan ook in de bestandsnaam voorkomen)
$extensPos = strrpos($relativePath,".");
// maak uitsluitend de naam van de foto
$string = substr($relativePath, 0, $extensPos);
// verander de extensie naar doc of docx
$relativePath = $string.'.'.'doc';
Kan je de extenties niet in een array plaatsen, en met in_array controleren of hij toegelaten is?
de bestanden zijn altijd goedgekeurd..wordt gecontroleerd bij het uploaden...

Ik bedenk me net dat het voldoende zou zijn om te schecken of de .doc bestaat.
Zo niet dan is het vanzelfsprekend een .docx

dus zoiets als

if exist ... else ....

Volgens mij werkt het onderstaande.


if (file_exists($relativePath)) {
    echo "The file $relativePath exists";
} else {

$relativePath = $relativePath.'x';

    echo "The file $relativePath exists";
}

en toch zou ik er niet blind vanuit gaan dat als file abc.doc niet bestaat het zeker is dat abc.docx

Het is maar 1 extra if en een aanroep van file_exists() (of is_file)

Maar in het geval de docx toch niet bestaat, kun je nog in je code ingrijpen
Ik zou hier is_file() gebruiken en er per definitie niet van uitgaan dat een bestand bestaat tot in lengte der dagen als het eenmaal is geüpload. Bestanden kunnen verdwijnen door menselijke fouten en door systeemfouten, bijvoorbeeld.


<?php
if (is_file($string . '.doc')) {
    // Het is een .doc
} elseif (is_file($string . '.docx')) {
    // Het is een .docx
} else {
    // Het is geen van beide: exception of foutafhandeling.
}
?>
Bedankt allemaal voor het meedenken.

In dit geval worden er doc of docx bestanden geupload door ingelogde leden.

Pagina 1 van het document wordt omgezet naar een afbeelding.

De thumb van die afbeelding komt in het fotoboek.

Het document wordt in een andere map gezet.

Bij clicken op de thumb opent de google viewer met het complete document.

Ik zal inderdaad in de foutafhandeling jullie suggesties meenemen.



Reageren