用文件名中的分号卷曲文件上传

Ait*_*tch 1 macos filenames curl file-upload escaping

我正在使用curl实现一个自动命令行文件上传器到servlet.

问题是,我在文件名中有数万个带分号(;)的文件.我很清楚这种烦恼,但它是一个遗留应用程序,每天都会继续生成新文件.由于下游的兼容性原因,重命名实际上不是一个选项.

我试过引用,转义,转换为"%3b",完全限定路径...显而易见的东西......但似乎没有任何工作,它无法从客户端发送.我在我的Mac上(捆绑卷曲版本7.21.3),但这不应该有所作为?

有任何想法吗?

macbookpro:~$ curl -F upload=@"my file.txt" http://localhost:8080/data/upload
ok
macbookpro:~$ curl -F upload=@"my;file.txt" http://localhost:8080/data/upload
curl: (26) failed creating formpost data
macbookpro:~$ curl -F upload=@"my\;file.txt" http://localhost:8080/data/upload
curl: (26) failed creating formpost data
macbookpro:~$ curl -F upload=@"my\\;file.txt" http://localhost:8080/data/upload
curl: (26) failed creating formpost data
macbookpro:~$ 
Run Code Online (Sandbox Code Playgroud)

Sim*_*nek 7

curl用于;将类型(或其他指令)与实际名称分开,所以我只是使用stdin代替:

cat 'my;file.txt' | curl -F upload=@- http://localhost:8080/data/upload
Run Code Online (Sandbox Code Playgroud)

filename=如果需要,您也可以添加指令(但名称中没有分号!).

  • *罩在桌子上*。尽管做了20年这样的工作,但我从未考虑过这种情况下的stdin。天才。我确实需要使用filename指令,因此对于Google员工来说:`curl -F upload = @-\; filename = xyz http:// localhost:8080 / data / upload <my \; file.txt`...起作用大。 (2认同)