2012-03-16 69 views
1

我正在實現一個自動的,命令行文件上傳使用curl到一個servlet。curl文件上傳與分號文件名

問題是,我有成千上萬個文件名中帶有分號(;)的文件。我很清楚這種煩惱,但它是一個傳統的應用程序,每天都會繼續生成新文件。出於兼容性原因,重命名不是真正的選擇。

我嘗試過引用,轉義,轉換爲「%3b」,完全限定路徑......顯而易見的東西......但似乎沒有任何工作,並且它無法從客戶端發送。我在我的Mac(捆綁curl版本7.21.3),但這不應該有所作爲?

任何想法?

macbookpro:~$ curl -F [email protected]"my file.txt" http://localhost:8080/data/upload 
ok 
macbookpro:~$ curl -F [email protected]"my;file.txt" http://localhost:8080/data/upload 
curl: (26) failed creating formpost data 
macbookpro:~$ curl -F [email protected]"my\;file.txt" http://localhost:8080/data/upload 
curl: (26) failed creating formpost data 
macbookpro:~$ curl -F [email protected]"my\\;file.txt" http://localhost:8080/data/upload 
curl: (26) failed creating formpost data 
macbookpro:~$ 
+0

其他可能的解決方案在這裏:http://superuser.com/q/590202/371458 – spyle 2014-09-30 12:50:44

回答

5

curl使用;從實際名稱分離型(或其他指令),所以我會簡單地使用標準輸入來代替:

cat 'my;file.txt' | curl -F [email protected] http://localhost:8080/data/upload 

如果需要,可能添加指令以及(但沒有名稱中的分號!)。

+1

* Smacks頭對錶*。儘管做了20年,我甚至從來沒有考慮stdin這個例子。天才。我確實需要在我的情況下的文件名指令,所以對於googlers: 'curl -F upload = @ - \; filename = xyz http:// localhost:8080/data/upload Aitch 2012-03-18 19:49:47