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

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

ただいまの
回答率

90.53%

  • CentOS

    3081questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • シェル

    279questions

    シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

  • POST

    267questions

    POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

  • cURL

    189questions

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

curlにてファイルをアップロードする際に10MBを超えるとエラーになる

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,744

senaha

score 11

前提・実現したいこと

Centos7.0を使用しています。
シェル上でcurlを使用してファイルサイズが10MB以上のファイルをPOSTしたいです。

発生している問題・エラーメッセージ

コンソールにて実行時に以下のメッセージが表示されます。

HTTP/1.1 400 Bad Request
Connection: close
Content-Length: 0
Date: Tue, 28 Feb 2017 02:47:22 GMT

実行時に出力したログは以下となります。

<= Recv header, 26 bytes (0x1a)
0000: HTTP/1.1 400 Bad Request
<= Recv header, 19 bytes (0x13)
0000: Connection: close
<= Recv header, 19 bytes (0x13)
0000: Content-Length: 0
<= Recv header, 37 bytes (0x25)
0000: Date: Tue, 28 Feb 2017 02:47:22 GMT
<= Recv header, 2 bytes (0x2)
0000: 
== Info: we are done reading and this is set to close, stop send
== Info: Closing connection 0

該当のソースコード

    curl -i -X POST http://192.168.1.1/API/backup \
     -H "authorization: AAA BBB "  \
     -F "backup={\"id\": \"$id\" };type=application/json" \
     -F "file=@/tmp/backup.zip" -k \
      --trace-ascii backup_log.txt

試したこと

送るファイルのサイズを10MB以下にすると応答は200で正常に終了しました。

curlのバージョン

curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.19.1 Basic ECC zlib/1.2.7 libidn/1.28 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz

確認したいこと

curlでPOSTする際には上限値が決まっているのでしょうか?
決まっている場合はそれを変更する方法を教えていただきたいです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

BadRequestが返ってくるということは、受け取る側の設定の問題かと思います。サーバのPHPやApacheの設定で上限が設定されていることがよくあります。POSTのサイズ制限といったキーワードで検索したらいろいろ記事が出てきます。

http://bashalog.c-brains.jp/12/02/02-105952.php

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/28 15:49

    ご回答ありがとうございます。

    サーバ側の担当に確認したところ、古い設定が適用されていました。
    サーバ側のweb.xmlに以下を追加したところ、エラー無く終了いたしました。

    <servlet>
    <servlet-name>restApiServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/WebAPI-context.xml</param-value>
    </init-param>
    <init-param>
    <param-name>throwExceptionIfNoHandlerFound</param-name>
    <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>

    <multipart-config>
    <max-file-size>5368709120</max-file-size>
    <max-request-size>5369757696</max-request-size>
    <file-size-threshold>0</file-size-threshold>
    </multipart-config>
    </servlet>

    お忙しい中ご教示頂き、有難う御座いました。

    キャンセル

  • 2017/02/28 15:58

    解決できてよかったです

    キャンセル

同じタグがついた質問を見る

  • CentOS

    3081questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • シェル

    279questions

    シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

  • POST

    267questions

    POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

  • cURL

    189questions

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