Problem mit Leerzeichen im Dateinamen

kevkev

Erfahrenes Mitglied
Hi,

Wenn Ich mit curl eine Datei an ein Script sende, und die Datei enthält ein Leerzeichen, kommt ein Fehler.

Code:
curl -F "file=@test.txt;type=text/plain" "http://test.de/test.php"

Ok, soweit geht es noch, aber wenn nun die Datei ein leerzeichen enthält:
Code:
curl -F "file=@test 123 456.txt;type=text/plain" "http://test.de/test.php"

Ok, ich hab probiert die Leerzeichen im Dateinamen durch "\ " zu ersetzen:
Code:
\"$i\" | sed 's/ /\\ /g'

Ok, der Dateiname wird auch richtig ersetzt, doch in curl bei der file=@ angabe übernimmt er aber trotzdem noch nicht die Leerzeichen.

Woran liegt den das :(?

Gruß Kevin
 
Hi,

Naja, er sagt mir, das der POST Teil nicht richtig sei:
curl: (26) failed creating formpost data

Jedenfalls wenn Ich eine Datei ohne Leerzeichen probiere funktioniert es (@deepthroat).

@deepthroat:
Auch in Bash Scripts?!
Dachte das wäre nur bei URL´s so.
Edit:
>Funktioniert mit %20 leider nicht in curl :(!

gruß Kevin
 
Zuletzt bearbeitet:
kevkev hat gesagt.:
@deepthroat:
Auch in Bash Scripts?!
Dachte das wäre nur bei URL´s so.
Mit Bash hat das ja nix zu tun, sondern mit curl weil du ja den Parameter mit dem Leerzeichen an curl übergibst und curl muß dann die Datei finden.

Bei mir funktioniert es allerdings ohne irgendwelche besonderen Vorsichtsmaßnahmen, einfach den Dateinamen gequotet als -F Parameter angeben und fertig. Bist du sicher das die Datei existiert und auch im richtigen Pfad liegt und die richtigen Zugriffsrechte hat?

Welche curl Version verwendest du denn? Ich hab hier 7.15.1. (cygwin)#

Gruß
 
Hi,

mhh, Ich mache das so:
Über ne For Schleife gebe Ich die Dateien aus.
Und nun übergebe Ich die $i (dateiname) an curl:
Code:
curl -F "datei=@$dateiname;type=$mimetyp" "http://123.de/123.php"

Jedoch bringt er mir diesen Fehler:
Code:
Illegally formatted content-type field!

EDIT:
Moment mal, in $i ist ja der komplette Pfad drinnen, d.h. auch die /.
Mist! Habs grad überprüft, der mekert net wegen den Leerzeichen, sondern wegen den " /
"
Weil dann sieht das so aus:
Code:
curl -F "datei=@./files/123.txt;type=$mimetyp" "http://123.de/123.php"

Aber wie escape Ich die dann richtig, oder wie mache Ich das?



Gruß Kevin
 
Zuletzt bearbeitet:
Nein, er meckert nicht wegen dem dateinamen, sondern wegen dem mimtype (content-type).

Bei mir funktionierts mit Leerzeichen, mit absolutem bzw. relativen Pfadangaben.

Gruß

/edit: am besten führst du dein Skript mit dem Parameter -x aus, da siehst du dann auch was ausgeführt wird (nach den Expansionen). Zusätzlich kannst du den Parameter -v verwenden, da siehst du die Originalzeile vor der Expansion.
 
Zuletzt bearbeitet:
Hi,

Mhh, stimmt, habe das übersehen, aber er mekert trotzdem noch:
Code:
sh-2.05b$ curl -F "filecontent=@./nur ein test.txt;type=text/plain" "http://test/uplaod.php"
curl: (26) failed creating formpost data
sh-2.05b$

Was nun?

Gruß Kevin
 
Zuletzt bearbeitet:
Hi,

Ja, die Datei existiert und Ich habe auch rechte diese Datei zu lesen.

Version ist die 7.13.2

gruß Kevin
 
Zuletzt bearbeitet:
Zurück