当前位置: 首页 > news >正文

外贸公司网站源码wordpress去除手机版

外贸公司网站源码,wordpress去除手机版,上海专业网站设计制作,wordpress自定义模块自定义字段golang实现可中断的流式下载 最近有一个需要实现下载功能#xff1a; 从服务器上读取文件#xff0c;返回一个ReadCloser在用户磁盘上创建文件#xff0c;通过io.Copy实现文件下载#xff08;io.Copy是流式的操作#xff0c;不会出现因文件过大而内存暴涨的问题#xff0…golang实现可中断的流式下载 最近有一个需要实现下载功能 从服务器上读取文件返回一个ReadCloser在用户磁盘上创建文件通过io.Copy实现文件下载io.Copy是流式的操作不会出现因文件过大而内存暴涨的问题通过context实现暂停 1 流式下载io.Copy 这里拷贝文件我们选择的是io.Copy而非是通过ioutil.ReadAll()将body中返回的数据一次性读取到内存 通过io.Copy可以保证内存占用一直处于一个比较稳定的水平 2 可中断context 通过封装io.Copy实现 将io.Copy封装为一个方法方法里传入context,外部通过context.WithCancel()控制流式拷贝的暂停 3 全部代码 这里演示我通过读取S3的一个对象下载到本地 /*通过io.Copy实现可中断的流复制 */ var (ak 99999999999999999999sk 9999999999999999999999999999999999999999endpoint http://xx.xx.xx.xx:8060bucket test-bucketkey d_xp/2G/2G.txt )func main() {s3Client : osg.Client.GetS3Client(ak, sk, endpoint)ctx, cancelFunc : context.WithCancel(context.Background())object, err : s3Client.GetObject(ctx, s3.GetObjectInput{Bucket: aws.String(bucket),Key: aws.String(key),})go func() {time.Sleep(time.Second * 10)cancelFunc()log.Infof(canceled...)}()if err ! nil {log.Errorf(%v, err)return}body : object.Bodydefer body.Close()file, err : os.Create(/Users/ziyi/GolandProjects/MyTest/demo_home/io_demo/target.txt)if err ! nil {log.Errorf(%v, err)return}defer file.Close()_, err FileService.Copy(ctx, file, body)if err ! nil {log.Errorf(%v, err)return}}type fileService struct {sem *semaphore.Weighted }var FileService fileService{sem: semaphore.NewWeighted(1), }type IoCopyCancelledErr struct {errMsg string }func (e *IoCopyCancelledErr) Error() string {return fmt.Sprintf(io copy error, %s, e.errMsg) }func NewIoCopyCancelledErr(msg string) *IoCopyCancelledErr {return IoCopyCancelledErr{errMsg: msg,} }type readerFunc func(p []byte) (n int, err error)func (rf readerFunc) Read(p []byte) (n int, err error) { return rf(p) }//通过ctx实现可中断的流拷贝 // Copy closable copy func (s *fileService) Copy(ctx context.Context, dst io.Writer, src io.Reader) (int64, error) {// Copy will call the Reader and Writer interface multiple time, in order// to copy by chunk (avoiding loading the whole file in memory).// I insert the ability to cancel before read time as it is the earliest// possible in the call process.size, err : io.Copy(dst, readerFunc(func(p []byte) (int, error) {select {// if context has been canceledcase -ctx.Done():// stop process and propagate context canceled errorreturn 0, NewIoCopyCancelledErr(ctx.Err().Error())default:// otherwise just run default io.Reader implementationreturn src.Read(p)}}))return size, err }
http://www.hkea.cn/news/14508432/

相关文章:

  • 同一个服务器的网站做有链小璇seo优化网站
  • 做板子焊接的网站的公司名字wordpress移动端模板
  • 网站备案帐户有什么用知名的食品行业网站开发
  • 旅游网站设计完整代码网站建设选题
  • 做物流的网站有哪些专业精准网络营销推广
  • 宁波网站推广合作商扬中网站制作公司
  • 旅游订房网站开发需求文档电子商城有哪些
  • 如何给网站做右侧导航2016个人网站备案
  • 1g内存做网站网站建设公司的服务公司
  • 泰州专业网站建设制作专业网站设计第三方
  • 搭建电商网站上海松江做网站公司
  • 网站开发需要哪些流程徐州建站公司
  • 做网站一般分几种jsp做网站能实现什么功能
  • 广州网页设计师工资一般多少推广网站排名优化seo教程
  • 做网站推荐源创网络网站一年的费用
  • wordpress 导航站jsp做的网站难吗
  • 无锡大型网站设计公司wordpress免费企业网站
  • 深圳福永做网站美丽乡村建设网站
  • 访问中国建设银行官方网站html网页生成
  • 做网站需要哪几个板块网络营销具有哪些特点
  • 广州网站建设oemjquery电子商务网站模板
  • 网站建设的多吗seo网站推广专员招聘
  • p2c网站方案网络公司做网站价格
  • 专做会议发布的网站如何自己做网站
  • 前端网页设计师哪家公司做推广优化好
  • 网站型与商城型有什么区别吗巴中公司网站建设
  • 网站开发学院wordpress 咚门下载
  • 重庆建网站城选快忻科技悉心购物网站制作多少钱
  • 穹拓做网站江西九江刚刚发生的新闻
  • 和京东一样的网站gl账号注册网站