原来是用的PutObject()方式上传文件的,但是当文件比较大的时候,总是报一个对方强制关闭连接导致上传失败。PS:公司的网比较渣,10MB的文件都传不上去,搜了下,说使用Multipart Upload方式上传比较好,经过一番折腾,终于搞定了。

使用的是Upload Part Copy拷贝上传上传的方式。

官方文档:http://docs.aliyun.com/?spm=5176.383663.9.6.tg4Xaf#/pub/oss/sdk/dotnet-sdk&multipart-upload

        /// <summary>
/// 将文件保存到阿里云oss
/// </summary>
/// <param name="httpPostedFile">要保存的文件</param>
/// <param name="path">保存的文件路径</param>
/// <returns>上传文件的路径</returns>
public string SaveFile(HttpPostedFile httpPostedFile, string path)
{
//http://docs.aliyun.com/?spm=5176.383663.9.6.tg4Xaf#/pub/oss/sdk/dotnet-sdk&multipart-upload
string fileExt = Path.GetExtension(httpPostedFile.FileName);
string fileName = Path.Combine(path, Common.GetRamCode() + fileExt); OssClient client = ALOssClient.GetInstance(); var bucketName = "wlx-zhibo";
var objectName = fileName;
// 开始Multipart Upload
var request = new InitiateMultipartUploadRequest(bucketName, fileName);
var r = client.InitiateMultipartUpload(request);
// 打印UploadId
Console.WriteLine(r.UploadId); var partSize = 102400;
var fileSize = httpPostedFile.ContentLength;
var partCount = fileSize / partSize;
if (fileSize % partSize != 0)
{
partCount++;
} var partETags = new List<PartETag>();
using (var inputStream = httpPostedFile.InputStream)
{
for (var i = 0; i < partCount; i++)
{
var skipBytes = (long)partSize * i;
inputStream.Seek(skipBytes, 0);
var size = (partSize < fileSize - skipBytes) ? partSize : (fileSize - skipBytes);
var req = new UploadPartRequest(bucketName, objectName, r.UploadId)
{
InputStream = inputStream,
PartSize = size,
PartNumber = i + 1
};
var uploadPart = client.UploadPart(req);
partETags.Add(uploadPart.PartETag);
}
}
var completeMultipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, objectName, r.UploadId);
foreach (var partETag in partETags)
{
completeMultipartUploadRequest.PartETags.Add(partETag);
}
var result = client.CompleteMultipartUpload(completeMultipartUploadRequest);
return result.Location;
}

阿里云OSS Multipart Upload上传实例的更多相关文章

  1. JAVA整合阿里云OSS实现文件上传功能

    引入maven <dependency> <groupId>org.apache.commons</groupId> <artifactId>commo ...

  2. 阿里云 oss 小文件上传进度显示

    对阿里云OSS上传小文件时的进度,想过两个方法:一是.通过多线程监測Inputstream剩余的字节数来计算,可是由于Inputstream在两个线程中共用,假设上传线程将Inputstream关闭, ...

  3. 阿里云oss,简单上传

    描述:oss比较方便,省去了自己搭建文件服务器的时间,价格比较便宜,下面是java基于oss的简单上传代码 a.添加maven依赖 <dependency> <groupId> ...

  4. 阿里云 轻量应用服务器 上传一个HTML文件或者jsp文件 通过外网IP访问

    我选择的是 宝塔Linux,现在就说一下如何往服务器里面传文件然后通过外网IP访问 1.打开宝塔Linux面板登录,安装tomcat,安装好后如图 2.点击tomcat有个文件标识处 3.出现如图 4 ...

  5. 阿里云ECS服务器无法上传文件的解决方案

    1.安装软件启动FTP服务 yum install vsftpd # 安装service vsftpd start # 启动服务chkconfig vsftpd on # 开机启动 2.防火墙ipta ...

  6. 阿里云oss视频上传不能在线播放,js,javascript,在线播放器,插件

    网页视频播放插件 发现阿里云oss储存,上传了视频不能在线播放. 解决方法:使用插件播放即可解决. <html> <head> <meta charset="u ...

  7. laravel使用阿里云OSS上传图片

    需要自己注册阿里云账号并且开通oss服务,建立Bucket存储空间,此步骤不做演示 一.composer安装:使用composer在项目根目录执行以下命令 composer require johnl ...

  8. Hexo一键部署到阿里云OSS并设置浏览器缓存

    自建博客地址:https://bytelife.net,欢迎访问! 本文为博客自动同步文章,为了更好的阅读体验,建议您移步至我的博客 本文作者: Jeffrey 本文链接: https://bytel ...

  9. 阿里云 OSS 如何设置防盗链, 上个月图床流量耗费50G+,请求次数10W+,什么鬼?

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

随机推荐

  1. poj1655 Balancing Act 找树的重心

    http://poj.org/problem? id=1655 Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  2. ECSHOP如何增加红包序列号字符

    ECSHOP系统线下发放红包时系统生成的红包序列号是在10000的基础上增加四位随机数字.如果当我们要发放大额度红包的时候,这样的序列号规 则难免给人不安全的感觉,万一有无聊的人,蒙几个红包序列号出来 ...

  3. 修改linux系统时间、rtc时间以及时间同步

    修改linux的系统时间用date -s [MMDDhhmm[[CC]YY][.ss]] 但是系统重启就会从新和硬件时钟同步. 要想永久修改系统时间,就需要如下命令:hwclock hwclock - ...

  4. VS2015配置Andriod开发环境

    原文:VS2015配置Andriod开发环境 折腾了好久终于配置OK了,分享给大家! 第一步: http://xamarin.com/download下载XamarinInstaller 第二步: 运 ...

  5. paip.关于动画效果的原则 html js 框架总结

    paip.关于动画效果的原则 html js 框架总结 1. 动画框架的来源:flex,jqueryui 3 2. 特效的分类 3 2.1. Property effects 动态改变一个或多个目标对 ...

  6. 使用NSCondition实现多线程同步

    iOS中实现多线程技术有非常多方法. 这里说说使用NSCondition实现多线程同步的问题,也就是解决生产者消费者问题(如收发同步等等). 问题流程例如以下: 消费者取得锁,取产品,假设没有,则wa ...

  7. ECLIPSE中反编译插件JAD的配置安装,轻松查看JAVA源代码

    第一步:下载jad的eclipse插件jar包 http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download 第二步:将此jar ...

  8. 【剑指offer】打印单列表从尾部到头部

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25028525 剑指offer上的第五题,在九度OJ上測试通过. 时间限制:1 秒 内存限制 ...

  9. Chromium Graphics: GPUclient的原理和实现分析之间的同步机制-Part II

    摘要:Part I探析GPUclient之间的同步问题,以及Chromium的GL扩展同步点机制的基本原理.本文将源码的角度剖析同步点(SyncPoint)机制的实现方式. 同步点机制的实现主要涉及到 ...

  10. zookeeper集群的python代码测试

    上一篇已经讲解了如何安装zookeeper的python客户端,接下来是我在网上搜到的例子,举例应用环境是: 1.当有两个或者多个服务运行,并且同意时间只有一个服务接受请求(工作),其他服务待命. 2 ...