get.go

时间:2022-07-06 15:49:21
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. 错误“Sources”参数中指定了多次。“Sources”参数不支持重复项。

    在“Sources”参数中指定了项“”多次.“Sources”参数不支持重复项. Asp.Net关于错误“Sources”参数中指定了多次.“Sources”参数不支持重复项. “Sources”参数 ...

  2. Spring 定时执行任务

    好不容易写了半天的文章竟然由于断网而丢失了,并未自动保存到草稿箱.只能简单的贴贴代码了. <?xml version="1.0" encoding="UTF-8&q ...

  3. js里各浏览器解析XML&comma;支持IE、火狐、Chrome等

    js在chrome中加载XML,js加载XML支持ff,IE6+,Opera等浏览器 见代码: <!doctype html> <html lang="en"&g ...

  4. JavaEE

    1.  为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担. 为了程 ...

  5. &lbrack;css filter&rsqb;filter在界面实现滤镜效果

    最近逛当当,发现当当尾品会的首页推荐最底端的商品链接是灰色的图片,然后鼠标hover之后就会变成正常的彩色 肯定不是通过img来改变的,然后直接看了一下源码,其实是用的filter属性 _(:з」∠) ...

  6. 小希的迷宫--hdu1272&lpar;并查集&rpar;

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  7. 浏览器桌面通知(notifications)

    近期在做公司后台管理系统,当有任务到来时,须要通知当事人,可是 当事人有可能在做别的,浏览器有可能会被最小化,这样就非常难看到通知了.经过查找发现有些浏览器能够使用noitfications.能够在桌 ...

  8. &lbrack;QT Creator&rsqb;LNK1123&colon; 转换到 COFF 期间失败&colon; 文件无效或损坏 。

    这个问题很恶心!网上说的原因是因为安装了多了版本的VS.在高版本的2010和2012上都会有问题,解决方法是使用visual studio 2008安装目录下的一个文件替代vs2010安装目录下的文件 ...

  9. ajax的项目实操(只用于记录部分文件未引入)

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  10. Android 上传图片到服务器 okhttp一

    [目录] (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二--------------------------- ...

相关文章