code: @Override
    void writeStreamBlob(OutputStream os, 
                         byte[] buffer, int rowOffset,
                         byte []blobBuffer,
                         PageServiceImpl tableService)
      throws IOException
    {
      int offset = rowOffset + offset();
      
      int blobLen = BitsUtil.readInt16(buffer, offset + 2);
      int blobOffset = BitsUtil.readInt16(buffer, offset);
      
      if (blobLen == 0) {
        BitsUtil.writeInt(os, 0);
        return;
      }
      
      if (isLargeBlob(blobLen)) {
        int blobId = BitsUtil.readInt(blobBuffer, blobOffset);
        
        ArrayList<PageBlob> blobList = new ArrayList<>();
  
        while (blobId > 0) {
          PageBlob page = tableService.getBlobPage(blobId);
          
          blobList.add(page);
          
          blobId = page.getNextId();
        }
          
        for (int i = 0; i < blobList.size(); i++) {
          PageBlob page = blobList.get(i);
          int length = page.getLength();
          
          if ((length & 0xc000_0000) != 0) {
            throw new IllegalStateException(L.l("Unexpected blob length {0} for {1}", 
                                                length, page));
          }
          
          if (i + 1 < blobList.size()) {
            length |= BLOB_CONT_MASK;
          }
          
          BitsUtil.writeInt(os, length);
          
          page.writeToStream(os);
        }
      }
      else {
        BitsUtil.writeInt(os, blobLen);
        
        os.write(blobBuffer, blobOffset, blobLen);
      }
    }
docs: Writes blob data to the output stream.