阿里云OSS分片上传DEMO
分片传输规则
1.不能超过10000片,
2.每片必须大于100KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Aliyun.OSS; namespace OssDemo
{
public partial class Form1 : Form
{
private string _endpoint = "oss-cn-beijing.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
private string _accessKeyId = "";
private string _accessKeySecret = "";
private int partSize = **;
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
lblStatus.Text = "Ready";
} private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
var fileToUpload = openFileDialog1.FileName;
var filename = Path.GetFileName(fileToUpload);
var client = new OssClient(_endpoint, _accessKeyId, _accessKeySecret);
try
{
string bucketName = "myoss";
string key = filename; // 开始Multipart Upload
var request = new InitiateMultipartUploadRequest(bucketName, key);
var result = client.InitiateMultipartUpload(request); // 计算片个数
var fi = new FileInfo(fileToUpload);
var fileSize = fi.Length;
var partCount = fileSize / partSize;
if (fileSize % partSize != )
{
partCount++;
} // 开始分片上传
try
{
var partETags = new List<PartETag>();
using (var fs = File.Open(fileToUpload, FileMode.Open))
{
for (var i = ; i < partCount; i++)
{
var skipBytes = (long)partSize * i; //定位到本次上传片应该开始的位置
fs.Seek(skipBytes, ); //计算本次上传的片大小,最后一片为剩余的数据大小,其余片都是part size大小。
var size = (partSize < fileSize - skipBytes) ? partSize : (fileSize - skipBytes);
var req = new UploadPartRequest(bucketName, filename, result.UploadId)
{
InputStream = fs,
PartSize = size,
PartNumber = i +
}; //调用UploadPart接口执行上传功能,返回结果中包含了这个数据片的ETag值
var ret = client.UploadPart(req);
partETags.Add(ret.PartETag);
}
Console.WriteLine("Put multi part upload succeeded : {0}", result.UploadId);
try
{
var completeMultipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, key, result.UploadId);
foreach (var partETag in partETags)
{
completeMultipartUploadRequest.PartETags.Add(partETag);
}
var ret2 = client.CompleteMultipartUpload(completeMultipartUploadRequest);
Console.WriteLine("complete multi part succeeded");
}
catch (Exception ex)
{
Console.WriteLine("complete multi part failed, {0}", ex.Message);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Put multi part upload failed, {0}", ex.Message);
} }
catch (Exception ex)
{
Console.WriteLine("Init multi part upload failed, {0}", ex.Message);
}
}
}
}
}
阿里云OSS分片上传DEMO的更多相关文章
- Thinkphp整合阿里云OSS图片上传实例
Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...
- 构建基于阿里云OSS文件上传服务
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...
- PHP实现阿里云OSS文件上传(支持批量)
上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下: 1.下载阿里云OSS对象上传SDK(P ...
- 记一次阿里云oss文件上传服务假死
引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...
- 阿里云oss视频上传不能在线播放,js,javascript,在线播放器,插件
网页视频播放插件 发现阿里云oss储存,上传了视频不能在线播放. 解决方法:使用插件播放即可解决. <html> <head> <meta charset="u ...
- php阿里云oss文件上传
php的文件上传 文件上传 php的文件上传放在了$_FILES数组里,单文件和多文件上传的区别在于$_FILES['userfile']['name']是否为数组, 不熟悉的可以读一下官方文档 单文 ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...
- 阿里云OSS文件上传封装
1.先用composer安装阿里云OSS的PHPSDK 2.配置文件里定义阿里云OSS的秘钥 3.在index控制器里的代码封装 <?php namespace app\index\contro ...
- ThinkPHP5使用阿里云OSS图片上传
1.下载OSS文件放在网站根目录下(OSS文件下载地址:https://gitee.com/jth1234/oss_files.git) 2.在入口文件中加载OSS 3.config文件配置oss信息 ...
随机推荐
- 相似微信的ChattingUi
先看主页面布局 activity_imitate_weixin_main.xml <RelativeLayout xmlns:android="http://schemas.andro ...
- cygwin 运行java的一些记录
javac编译没问题,但是java执行就不行,处理方式如下 其实就是把宿主机下的java.exe在cygwin下搞一个快捷方式 关于路径问题,可以使用cygpath命令进行宿主机和cygwin间的转换 ...
- shell取余数
shell取余数 技术分享 » linux | 阅读(9993) | 评论(0) Sep 3 2010 备忘脚本date取得分钟数$(()) 运算 #execute every 5 minutesa= ...
- web压力测试指标
1.TPS每秒钟完成的web请求响应数量TPS=并发数/响应时间TPS是衡量系统性能的重要指标 2.并发数时间段内,系统同时处理的web请求响应数量 3.响应时间所有web请求处理完毕的时间 4.吞吐 ...
- 李洪强漫谈iOS开发[C语言-053]-小结
/* 已经学习过的C语言语法 01 基本C程序结构 int main (void) int main(int argc,char *arv){...} 02 基本语句(输入输出) 基本头文件: #in ...
- Hive Compiler过程
通过Parser将HiveQL转换成AST,通过Semantic Analyzer将AST转换为QB,通过Logical Plan Generator将QB转换成Operator Tree,通过Log ...
- php的json校验json-schema
客户端和服务端的http信息传递,采用json几乎成了标配.json格式简单,易于处理,不过由于没有格式规定,无法校验. 好在php有json-schema模块,可以用来验证json是否符合规定的格式 ...
- Unix系统编程()brk,sbrk
在堆上分配内存 进程可以通过增加堆的大小来分配内存,所谓堆是一段长度可变的连续虚拟内存,始于进程的未初始化数据段末尾,随着内存的分配和释放而增减.通常将堆的当前内存边界称为"program ...
- Linux下,PHP扩展安装(使用yum安装)
直接操作linux,在命令模式下用yum 来安装PHP的扩展: 扩展:mysqli 命令: yum install php-mysqli 扩展:pdo 命令: yum install php-pdo
- cs108 03 ( 调试, java通用性)
Debuger Great questions These questions will solve most bugs: what method shows the symptom ? what l ...