DIY 7牛先端アップロード


私たちのプロジェクトの中に大量の画像がアップロードされ、展示されています.私たちは7牛をCDNとして選んだ.この中の一つの重要な原因は、qiniuがフロントエンドをサポートして直接アップロードするからです.ややもすれば4-5 MBのピクチャーは私達のap serverまで一回り回転しなくてもいいです.フロントエンドアップロードをサポートするために、Qiniuはjavascript SDKを提供します.でもコードを見ました.大きすぎます.7000行以上のjavascriptがあります.本当に必要ですか?必要がありますか?必要がありますか?DIYを一つ決めました.正直に言えば、qiniuは様々なSDKを提供しています.REST APIで直接アップロードすることは勧められません.APIに関する呼び出しも簡単です.だから、ちょっと力がかかりました.この文があるから
何かのように、解決したら簡単だと思います.同じように何かのように、ビッグピctureを理解すれば、もっとやりやすくなります.
qiniuは大きなファイルをサポートするために、ユーザーがファイルをブロックに分けてアップロードすることができます.すべてのファイルブロックをアップロードした後、すべてのブロックを完全なファイルにします.少なくとも論理的にはそうです.物理的な記憶はどうですか?自分だけが知っています.
私たちは2.5 MBのファイルを例にします.ファイルを3つのブロックに分けてアップロードします.blockSizeは1 MBに設定します.次のような操作が必要です.
  • block 1をアップロードする.qiniuサーバは、このblockを識別するためのctxを返します.例えばabcd
  • block 2をアップロードする.qiniuサーバは、このblockを識別するためのctxを返します.例えばefgh
  • block 3をアップロードする.qiniuサーバは、このblockを識別するためのctxを返します.例えばijk
  • Qiniuサーバという新しいファイルは、abcdefghijk3つのブロックで構成されていると教えてください.また、提供key.ファイルを生成できます.
  • 具体的にAPIに行くと、こうなります.
  • POST /mkblk/1048576アップロード開始の1 MBファイルの内容.サーバはctxと他の内容を返します.
  • POST /mkblk/1048576アップロード途中の1 MBファイルの内容.サーバはctxと他の内容を返します.
  • POST /mkblk/524288最後の0.5 MBのファイル内容をアップロードする.サーバはctxに戻って他の内容になりました.
  • POST /mkfile/2621440/key/.ファイルを作成します.POSTのbodyでは上の3つのctxを順に並べてカンマで分けます.このようにファイルが作成されます.上記のようにPOSTのbodyの内容はabcd,efgh,ijk
  • 最後に2点を追加します.
  • ファイル内容の読み込みと各ステップ間の接続はpluplloadによって行われます.これは公式のSDKとも一致します.しかし、コードの量が少ないです.
  • qiniuはblock内部でchunkに分けてアップロードできます.利用/bputAPIでctxを指定すればいいです.複雑で特別な需要がないので、採用しませんでした.