get.go
- 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)
- }
- }
随机推荐
- LeetCode(32)-Binary Tree Level Order Traversal
题目: LeetCode Premium Subscription Problems Pick One Mock Articles Discuss Book fengsehng 102. Binary ...
- jsp标签jsp:setProperty用法
<jsp:setProperty>用来设置已经实例化的Bean对象的属性 第一种形式: <jps:setProperty name = "JavaBean实例名" ...
- 关于iOS9 HTTP不能正常使用的解决方法
在工程的info.plist文件中添加NSAPPTransportSecurity类型为Dictionary,在NSAPPTransportSecurity下添加NSAllowsArbitraryLo ...
- ORACLE 本地数据库存储过程 调用远程数据库存储过程
废话少说,直接切入主题 步骤1:建立一个远程数据库的连接服务名 D:\oracle\ora92\network\admin\tnsnames.ora 添加如下代码: SDEC = (DESC ...
- WSGI及gunicorn指北(二)
pyg0已经大概了解了wsgi.现在他决定深入探索他们实际在生产环境里用到的web 服务器 -gunicorn. 先来看看官网的介绍:Gunicorn 是一个运行在Unix上的python WSGI ...
- 在MinGW下编译ffmpeg
因为需要使用ffmpeg的相关库和执行文件,所以需要编译最新的ffmpeg代码.为了能在编译成Windows native执行程序(需要在.net中调用该执行程序),这里我们使用MinGW. 1,安装 ...
- 【转】UNREFERENCED_PARAMETER的作用
UNREFERENCED_PARAMETER 的作用我们从 UNREFERENCED_PARAMETER 开始吧.这个宏在 winnt.h 中定义如下: #define UNREFERENCED_PA ...
- PHP合并数组的三种方法的分析与比较
常用的合并数组的方法有三种:array_merge().array_merge_recursive().+,下面一个一个介绍 array_merge() 此函数合并一个或多个数组,当输入的数组中有相同 ...
- C语言中函数中传入一个数组,并且返回一个数组
一.C语言可以很容易将一个数组传递给一个自定义函数,格式如下: main() { adb(float a[],int n); } float adb(float a[],int n) { …… ret ...
- SOFA 源码分析— 事件总线
前言 大部分框架都是事件订阅功能,即观察者模式,或者叫事件机制.通过订阅某个事件,当触发事件时,回调某个方法.该功能非常的好用,而 SOFA 内部也设计了这个功能,并且内部大量使用了该功能.来看看是如 ...