ここで説明されている紺色のメソッドを実装するためにこのチュートリアルを読んでいました。https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/put-blockブロックを識別する与えられた長さと同じサイズのベース64文字列を作成する
- 有効なBase64文字列値:
は、この方法を実現するために、我々は、ブロックIDを必要とします。
- エンコードする前に、文字列のサイズは64バイト以下でなければなりません。
- 指定されたBLOBに対して、blockidパラメータに指定された値の長さは、ブロックごとに同じサイズでなければなりません。
Base64文字列はURLエンコードされている必要があります。その作者を達成するINORDERので
は言う:
「私は通常ちょうど は7文字の文字列にフォーマットされたブロックIDを使用して、1から何でもそれらを1番のためので、私は」。 "0000001"が得られます。 ブロックIDは基本64文字列でなければなりません。
と、このコードを使用しています。
string blockId = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("BlockId{0}",blockNumber.ToString("0000000"))));
「0000000」にフォーマットすると23変換するには「0000023」を意味するのでさて、これは間違いなくBase64ではありませんが、どのように、彼女は条件2と 3を果たしているが、もっとして7桁の数字は、彼女はあなたが#3を見れば条件2
うん、私はあなたのコードはまた、JavaScriptを使用して見ました、あなたもこのすなわちようでした7桁を考慮してしかし、gauravはどのように文字列が64バイト以上であってはならないという条件を満たしていますか? –
'しかし、gauravはどのように文字列が64バイトを超えてはならないという条件を満たしていますか? - この64バイトの制限は、base64でエンコードされた文字列、つまり基本文字列に変換される前です。だから、文字列を持つので、 'string blockId = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format(" BlockId {0} "、blockNumber.ToString(" d64 "))); 64バイトより大きい –
そして、このコードをJavaに変換するとき、すなわち 文字列formattedID = "BlockId" + String.format( "%07d"、blockNumber); String blockId = Base64.getEncoder()。encodeToString(formattedID.getBytes( "utf-8")); 私は数字を7桁以上入力すると実際にその番号を許可します。私は50000の制限を知っているが、これを避ける方法は私のユーザーが誤って間違って行うことはありません。 –