Laden Sie eine Datei mit einem Komma im Namen mit curl hoch

6519
Tyilo

Wie kann ich eine yes, this filename has a comma.txtmit dem CLI benannte Datei hochladen curl?

Normalerweise würden Sie dies tun, um eine Datei hochzuladen mit curl:

curl --progress-bar -F "fileUpload=@filename.txt" 

Allerdings curlinterpretiert Kommas als mehrere Dateien zu, so dass dies nicht funktionieren wird :

curl --progress-bar -F "fileUpload=@yes, this filename has a comma.txt" 

Wie kann ich den Dateinamen entfernen?


Ich habe bereits eine Problemumgehung gefunden, indem ich einen temporären Symlink zur Originaldatei erstellt und an curl übergeben habe. Das Problem ist jedoch, dass der Dateiname, curlder an den Server gesendet wird, der Dateiname des Symlinks ist, nicht die Originaldatei.

3

1 Antwort auf die Frage

4
terdon

Sie haben nicht gesagt, welches Betriebssystem Sie verwenden. Die folgenden Lösungen funktionieren für Linux (nicht nur für curldie meisten Arten der Flucht, sondern :

  • Geben Sie den Dateinamen in Anführungszeichen ein (Sie müssen sie auch mit Escapezeichen versehen):

    curl --progress-bar -F "fileUpload=@\"yes, this filename has a comma.txt\"" 
  • Entkomme dem Komma

    curl --progress-bar -F "fileUpload=@yes\, this filename has a comma.txt" 
Ich verwende Mac OS X 10.8.2, nur das Zitieren hat funktioniert. Derjenige, in dem das Komma mit Escapezeichen versehen ist, versucht, eine Datei mit dem Namen "yes" hochzuladen (`curl: (26) konnte die Datei" yes \ "nicht öffnen). Tyilo vor 11 Jahren 0
Unter Mac OSX 10.9.4 musste ich die Anführungszeichen nach dem @ setzen: `curl --progress-bar -F" fileUpload = @ \ "ja, dieser Dateiname hat eine comma.txt \" "` spyle vor 9 Jahren 1
Hatte dasselbe Problem wie Spyle auf Ubuntu 14.04. Terdons Antwort sendet tatsächlich den literalen Dateinamen anstelle des Inhalts der Datei. Cory R. King vor 9 Jahren 0
@ CoryR.King ja, natürlich ist das beabsichtigt. Wie würde es sonst funktionieren? Um den Inhalt der Datei zu senden, müssen Sie einen Namen für die entfernte Datei angeben, in den geschrieben werden soll. terdon vor 9 Jahren 0