質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

1回答

15152閲覧

curlでのファイル転送時のファイル名メタ文字エスケープがうまく行きません

siosenbei

総合スコア22

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2016/02/01 03:45

編集2016/02/01 03:52

curlにて、ファイル転送を行おうとしたら、下記エラーとなり転送できません。
どなたか、解決方法をご教示いただけないでしょうか?

※Reshat5.5のターミナルにてコマンドを実行する。

●コマンド内容と結果
curl --user XXXX:XXXX -F "filedata=@"test.png"" http://localhost:7777/upload?/test/uploader/sample
curl: (26) failed creating formpost data

●curlのバージョン
curl 7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

※実際に転送したいファイルはファイル名にセミコロン(;)がつきます。
(例→ te;st.png)

※下記に用紙ダブルクォーテーションを外すと、転送できます。
curl --user XXXX:XXXX -F filedata=@test.png http://localhost:7777/upload?/test/uploader/sample

※maOSXのcurlでは、期待通り動作しました。(下記は実行macのcurlバージョン)
curl 7.30.0 (x86_64-apple-darwin13.0) libcurl/7.30.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz

以上、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ファイル名として、test.pngを指定すべきなのに、"test.png"を指定してしまっているので、「そんなファイルはないよ」ということでエラーになっているのだと思います。
正しくtest.pngを指定すれば良いかと思います。te;st.pngだと、

Bash

1curl --user XXXX:XXXX -F "filedata=@te;st.png" http://localhost:7777/upload?/test/uploader/sample 2とか 3curl --user XXXX:XXXX -F filedata=@"te;st.png" http://localhost:7777/upload?/test/uploader/sample 4とか 5curl --user XXXX:XXXX -F filedata=@te";"st.png http://localhost:7777/upload?/test/uploader/sample

ですね。

投稿2016/02/01 04:19

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siosenbei

2016/02/01 05:11

ご回答、ありがとうございます。 パスの存在確認とダブルクォーテーションをご指摘の通りになおして見ましたが、同じ結果となりました。 ※セミコロンがファイル名にない場合は、転送ができました。 ●相対パス 全て、curl: (26) failed creating formpost data curl --user XXX:XXX -F "filedata=@ho;ge.png" http://localhost:7777//upload?/test/uploader/sample/test curl --user XXX:XXX -F filedata=@"ho;ge.png" http://localhost:7777//upload?/test/uploader/sample/test curl --user XXX:XXX -F filedata=@ho";"ge.png http://localhost:7777//upload?/test/uploader/sample/test ●絶対パス ※ls で存在を確認。 ls "/test/uploader/sample/test/ho;ge.png" /test/uploader/sample/test/ho;ge.png 全て、curl: (26) failed creating formpost data curl --user XXX:XXX -F "filedata=@/test/uploader/sample/test/ho;ge.png" http://localhost:7777//upload?/test/uploader/sample/test curl --user XXX:XXX -F filedata=@"/test/uploader/sample/test/ho;ge.png" http://localhost:7777//upload?/test/uploader/sample/test curl --user XXX:XXX -F filedata=@/test/uploader/sample/test/ho";"ge.png http://localhost:7777//upload?/test/uploader/sample/test 以上です。よろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問