1

Valence APIでのニュースの添付ファイルのアップロードに問題があります。PHP を使用していますが、投稿リクエストを送信しようとすると、アクションが完了しません。コマンドラインで実行しているため、プログラムを終了するにはプロセスを強制終了する必要があります。

ファイルのデータと詳細 (名前、タイプ、サイズ) はデータベースに保存されており、 1 回の呼び出しで JSON 形式のニュースと添付ファイルなどすべてを投稿しています。投稿メッセージに次の形式を使用しています (API ドキュメントに記載されています)。

コンテンツ タイプ: マルチパート/混合。境界 = e9e1c17c958e2a89a192bf5d3f7d1ffd コンテンツの長さ: 46538

--e9e1c17c958e2a89a192bf5d3f7d1ffd コンテンツ タイプ: アプリケーション/json

{"Title":"Some News","Body":{"Text":"これは</span>とても</span>カラフルなタイトルです</span>","Html":"これ</span>とても</span>カラフルなタイトルです</span>"},"StartDate":"2013-11-06T05:00:00.000Z","EndDate":"2013-11-30T05:00:00.000Z", "IsGlobal":false,"IsPublished":true,"ShowOnlyInCourseOfferings":false}

--e9e1c17c958e2a89a192bf5d3f7d1ffd Content-Disposition: フォームデータ。name="FC.png"; ファイル名="FC.png"

コンテンツ タイプ: 画像/png

{} --e9e1c17c958e2a89a192bf5d3f7d1ffd--

エンコーディングが原因で、ファイルの内容が表示されませんこのメッセージの content-lengthは、JSON データの文字列の長さ + ファイルサイズ (バイト)として計算しています。

私の非常に具体的な質問は、データベースからファイルを直接投稿できるか、最初にファイルをディスクに書き込んでから投稿することをお勧めするかということです。また、PHP を使用した既存のサンプル コードがあるオンラインの例を教えていただければ幸いです。

もう一つ。content-length に file-size をバイト単位で含めない場合、添付ファイルを除いて正常に動作します。サイズは 29 バイトで、クリックするとデータ破損エラーで開きます。

あらゆる種類の助けをいただければ幸いです。ありがとう。

4

2 に答える 2

0

HTTP 要求のは、 HTTP 本文全体Content Lengthの長さ (バイト数) である必要があります。これは、JSON 構造のサイズ、ファイル ストリーム内のバイト数、および周囲のすべてのボディ パーツ ヘッダー/セパレータと空白の長さを意味します。

アップロードされたファイル データのデータ ストアに関する特定の要件はありません。基本的に、ボディに複数の部分を含む HTTP リクエストを形成しています。最初の部分は JSON 構造 (メディア タイプapplication/json) である必要があります。2番目の部分は「ファイル」のバイトであり、そのボディ部分のメディアタイプは適切に設定されているimage/pngか、何でも構いません) -- そのバイトストリームをデータベースから収集するか、ファイルから収集するかは問題ではありません。

于 2013-12-11T19:21:57.317 に答える