Hoi,
ik rename met PHP een bepaald bestand (op mijn NAS). Dus bijv : <?php rename ("a".b","x.y") ?>;
Op de server gaat dat prima, ik zie de hernoemde file met de juiste hernoemde naam.
Als ik die file nu met de Windows-verkenner bekijk, ziet de filenaam er heel anders uit!
Heeft iemand een idee hoe dat komt en wat ik eraan kan doen?

Bvd en mvg
Andre Janssen op 09/04/2021 11:48:48

Hallo Jan.

Nee, mijn applicatie verwijdert alle spaties alvorens te renamen.
Er staat na de rename en het verwijderen van spaties wel nog een "lege ruimte" voor de punt van de extensie, kennelijk is dat geen spatie. Dus zoiets: a .b
De lege ruimte voor de punt is geen spatie!
mvg

Maar wat is het dan wel? Als het een "raar" karakter is, is het niet zo heel raar dat Windows-over-Samba zo'n geknutselde naam te zien krijgt (mijn ervaring is dat dit direct al het geval is zodra er ook maar iets anders dan de "gangbare tekens" in de naam zit.

Andre Janssen op 09/04/2021 12:32:58
Wie wil een file op zijn/haar Synology-NAS proberen?

Dat zou ik wel kunnen doen, maar heb je mijn suggesties aan het eind van de vorige pagina al geprobeerd?

Dit weekend ga ik alle suggesties uitproberen en laat zsm de resultaten weten.
Prettig weekend!

[size=xsmall]Toevoeging op 10/04/2021 12:21:23:[/size]

Tom, welke fileshare adviseer je/ heb je het liefst?
Of gewoon de file via WeTransfer of email? Dit liever niet denk ik?
mvg


[size=xsmall]Toevoeging op 10/04/2021 12:39:54:[/size]

Ok, inmiddels is de gesharede file te vinden via share: https://files.fm/u/p4u8d9pqs
Deze kun je nu renamen via php naar een andere naam, bijv naar: T002_109-bv_01.pdf
Vervolgens is die gerenamde naam ook te zien op de NAS (Filestation), maar via Windows Verkenner zie je iets heel anders, met pdf als extensie.....

rara....
Het wordt wel lastig reproduceren als je niet welk protocol er überhaupt gebruikt wordt.
Duidelijk is nu dat het niet iets is met PHP, maar met de koppeling tussen een Synology NAS en Windows.
Overigens, hier werkt het prima met de nieuwste DSM, Windows 10 clients en Linux clients.
Beste Ad, wat wil je precies weten? Volgens mij heb ik het probleem toch duidelijk verwoord.
"Hier werkt het prima" ... wat bedoel je dan met "het"?

mvg
Kun je en Windows trouwens de file weer wel de gewenste lange naam geven? En blijft die dan gelijk in alle systemen.

Lijkt een beetje of Windows een lokale vertaal-lijst heeft die niet gevuld wordt voor op de NAS gewijzigde bestandsnamen.
Andre Janssen op 10/04/2021 12:10:49


Ok, inmiddels is de gesharede file te vinden via share: https://files.fm/u/p4u8d9pqs
Deze kun je nu renamen via php naar een andere naam, bijv naar: T002_109-bv_01.pdf
Vervolgens is die gerenamde naam ook te zien op de NAS (Filestation), maar via Windows Verkenner zie je iets heel anders, met pdf als extensie.....


Dat is niet wat ik bedoelde......
Als ík dat bestand ga rename()en werkt het natuurlijk gewoon, zoals eerder gezegd is al vastgesteld dat het niet aan PHP ligt maar aan de koppeling tussen de NAS en PC.
Upload het bestand na het renamen, dan kan ik kijken of daar vreemde dingen in zitten.
Is dat hoe hij op de Windows machine verschijnt of hoe hij op de NAS verschijnt?
Als ik hem download zie ik niets vreemds maar dat zou kunnen komen doordat Windows de bestandsnaam automatisch vertaald.
Wat ik wél zie is dat de bestandsnaam op files.fm af lijkt te wijken met de download.
Op de ene plek is het een tilde (~) en op de andere een underscore (_). Ook de URL-encoded downloadlink geeft een tilde weer (%7E).

Als allerlaatste zou ik nog kunnen bedenken dat PHP niet in UTF-8 (unicode) werkt en dat er dus "vreemde" karakters gebruikt worden. Dat ze er uit zien als gewone karakters zegt in deze niets.

Als dat het niet is denk ik niet dat dit forum je verder kan helpen en zou ik het eens op het Synology forum vragen. Het is dan duidelijk geen probleem met PHP maar met de NAS of de koppeling daarvan met de Windows machine.
Hi

Plaats deze code eens op je toegankelijke site of deel hier het resultaat. Dan kunnen we echt ZIEN wat er staat als bestandsnaam.

<!DOCTYPE html>
<html lang="nl">
	<head>
		<meta charset="utf-8">
		<title>Glob test</title>
	</head>
	<body>
        <ul>
            <?php
                chdir ('uw juiste map met bestanden');//wijzig naar juiste map; mappen splitsen met gewone /
                //D:\Documenten\WebSites\one\test.be\httpd.www\
                $lijst = glob('*.pdf');
                foreach ($lijst as $pdf) {
                    echo '<li>' . $pdf . ' (';
                        $split = str_split($pdf);
                        foreach ($split as $c) {
                            echo ord($c) . ', ';
                        }
                    echo ')</li>' . PHP_EOL;
                }
            ?>
        </ul>
	</body>
</html>

Uw vriend google kan je zeker vertellen welke karaktercode bij welk teken hoort. zie ascii

Jan

Reageren