Probleem met filenaam van met PHP hernoemde file
Pagina: « vorige 1 2 3 volgende »
https://www.synology.com/en-global/knowledgebase/DSM/tutorial/File_Sharing/file_or_folder_name_displayed_as_12HWA0_8
Toevoeging op 09/04/2021 11:02:16:
Na een paar testen op mijn eigen synology. Mogelijks eindigt uw bestand op een punt of spatie.
Indien synology: Toevoeging op 09/04/2021 11:02:16:
Na een paar testen op mijn eigen synology. Mogelijks eindigt uw bestand op een punt of spatie.
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
Thom nvt op 09/04/2021 07:51:08:
Link dan even naar de échte Wikipedia i.p.v. zo'n met spam- en trackingcookies overladen ripoff: https://en.wikipedia.org/wiki/8.3_filename
Ik had bewust even naar een Nederlandse versie gelinkt.
De extensie is wel gelijk gebleven.
2. Zoals gezegd: op de NAS zelf is alles correct zichtbaar. Vanaf mijn laptop via de Windows-verkenner dus niet.
3. Experiment met SSH moet ik nog doen.
Misschien heeft er iemand ook een NAS, dan kan ik wel een bestand sturen om te testen?
Mvg
Lijkt me dat je op merk en type zou moeten zoeken.
Webstation: 2.1.10-0160
WebDAV Server: 2.4.0-0062
Filestation: 1.2.8-0293
PHP: 7.3.16-0008
Misschien heb je er iets aan?
Wie wil een file op zijn/haar Synology-NAS proberen?
Ik heb namelijk echt het vermoeden dat het een combinatie van instellingen tussen je NAS en je Windows machine is die niet zo 123 te reproduceren is op een ander systeem.
Heb je al geprobeerd om een bestand te downloaden naar je laptop? En krijg je dan wel de juiste bestandsnaam?
of een ander device (telefoon / tablet)
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
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?
Prettig weekend!
Toevoeging op 10/04/2021 12:21:23:
Tom, welke fileshare adviseer je/ heb je het liefst?
Of gewoon de file via WeTransfer of email? Dit liever niet denk ik?
mvg
Toevoeging op 10/04/2021 12:39:54:
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....
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.
"Hier werkt het prima" ... wat bedoel je dan met "het"?
mvg
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.....
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.
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.
Plaats deze code eens op je toegankelijke site of deel hier het resultaat. Dan kunnen we echt ZIEN wat er staat als bestandsnaam.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!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>
<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
Gewijzigd op 11/04/2021 10:45:11 door Jan R