func (bucket Bucket) DownloadFile(objectKey, filePath string, partSize int64, options ...Option) error {
	if partSize < 1 {
		return errors.New("oss: part size smaller than 1")
	}
	uRange, err := getRangeConfig(options)
	if err != nil {
		return err
	}
	cpConf := getCpConfig(options)
	routines := getRoutines(options)
	if cpConf != nil && cpConf.IsEnable {
		cpFilePath := getDownloadCpFilePath(cpConf, bucket.BucketName, objectKey, filePath)
		if cpFilePath != "" {
			return bucket.downloadFileWithCp(objectKey, filePath, partSize, options, cpFilePath, routines, uRange)
		}
	}
	return bucket.downloadFile(objectKey, filePath, partSize, options, routines, uRange)
}
DownloadFile downloads files with multipart download.

objectKey    the object key.
filePath    the local file to download from objectKey in OSS.
partSize    the part size in bytes.
options    object's constraints, check out GetObject for the reference.

error    it's nil when the call succeeds, otherwise it's an error object.
package oss
import (
	"crypto/md5"
	"encoding/base64"
	"encoding/json"
	"errors"
	"fmt"
	"hash"
	"hash/crc64"
	"io"
	"io/ioutil"
	"net/http"
	"os"
	"path/filepath"
	"strconv"
)