web-dev-qa-db-ja.com

名前にカンマが含まれるファイルをcurlでアップロードする

Cli curlを使用してyes, this filename has a comma.txtという名前のファイルをアップロードするにはどうすればよいですか?

通常、これを行ってcurlを含むファイルをアップロードします。

curl --progress-bar -F "[email protected]"

ただし、curlはカンマをアップロードする複数のファイルとして解釈するため、これは機能しません。

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

ファイル名をエスケープするにはどうすればよいですか?


元のファイルへの一時的なシンボリックリンクを作成し、それをcurlに渡すことで、回避策をすでに見つけました。ただし、問題は、curlがサーバーに送信するファイル名が、元のファイルではなく、シンボリックリンクのファイル名であるということです。

5
Tyilo

使用しているOSをまだ言っていません。次のソリューションはLinuxで機能します(curlだけでなく、ほとんどの種類の エスケープ

  • ファイル名を引用符で囲みます(それらもエスケープする必要があります):

    curl --progress-bar -F "fileUpload=@\"yes, this filename has a comma.txt\"" 
    
  • カンマをエスケープする

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