package api

import (
    "net/http"
    "fmt"
    "io/ioutil"
)

const bufferSize = 512 * 1024
//获取空间文件
func Get(host string, port int, vid uint64, fid uint64, filename string) ([]byte, error) {
    url := fmt.Sprintf("http://%s:%d/%d/%d/%s", host, port, vid, fid, filename)
    resp, err := http.Get(url)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    if resp.StatusCode == http.StatusOK {
        return ioutil.ReadAll(resp.Body)
    }else {
        return nil, fmt.Errorf("%d != 200", resp.StatusCode)
    }
}
//获取空间文件   指定字节区间
func GetRange(host string, port int, vid uint64, fid uint64, filename string, start int, length int) ([]byte, error) {
    url := fmt.Sprintf("http://%s:%d/%d/%d/%s", host, port, vid, fid, filename)
    req, _ := http.NewRequest(http.MethodGet, url, nil)
    req.Header.Set("Range", fmt.Sprintf("bytes=%d-%d", start, start + length - 1))
    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    if resp.StatusCode == http.StatusPartialContent {
        return ioutil.ReadAll(resp.Body)
    }else {
        return nil, fmt.Errorf("%d != 200", resp.StatusCode)
    }
}

随机推荐

  1. vue2.0-基于elementui换肤[自定义主题]

    0. 直接上 预览链接 vue2.0-基于elementui换肤[自定义主题] 1. 项目增加主题组件 在项目的src/components下添加skin文件夹 skin文件获取地址 2. 项目增加自 ...

  2. Java IO学习--(五)字节和字符数组

    内容列表 从InputStream或者Reader中读入数组 从OutputStream或者Writer中写数组 在java中常用字节和字符数组在应用中临时存储数据.而这些数组又是通常的数据读取来源或 ...

  3. 自制node.js + npm绿色版

    自制node.js + npm绿色版   Node.js官网有各平台的安装包下载,不想折腾的可以直接下载安装,下面说下windows平台下如何制作绿色版node,以方便迁移. 获取node.exe下载 ...

  4. sudoku solver(数独)

    Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...

  5. spiral matrix 螺旋矩阵

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  6. VS2010断点调试技巧

    设置断点:在如下图中的红色圆点处设置断点,红色圆点表示已经在这行设置断点.快捷键F9.   启动调试:按F5或者点击左边红框中的按钮.右边框是开始执行(不调试)Ctrl+F5. 调试工具栏:下面是工具 ...

  7. 转载 jQueryEasyUI Messager基本使用

    http://www.cnblogs.com/libingql/archive/2011/07/17/2109020.html 一.jQueryEasyUI下载地址 http://www.jeasyu ...

  8. java 垃圾回收总结(1)

    java 垃圾回收总结(1)   以前看过很多次关于垃圾回收相关的文章,都只是看过就忘记了,没有好好的整理一下,发现写文章可以强化自己的记忆. java与C,c++有很大的不同就是java语言开发者不 ...

  9. Mac 下实现 pyenv/virtualenv 与 Anaconda 的兼容

    http://blog.csdn.net/vencent7/article/details/76849849 自己一直用的 pyenv 和 pyenv-virtualenv 管理不同的 python ...

  10. python argparse用法总结

    转:python argparse用法总结 1. argparse介绍 argparse是python的一个命令行解析包,非常适合用来编写可读性非常好的程序. 2. 基本用法 prog.py是我在li ...