测试在阿里云服务器上是否可以在指定文件后添加数据生成新文件
2014-09-10 10:47
417 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using Aliyun.OpenServices.OpenStorageService;
using System.IO;
using System.Collections;
namespace TestAddFile
{
class Program
{
static void ReadFile(string DownLoadPath, OssClient client,string bucketName,string key)
{
GetObjectRequest ReadRequest = new GetObjectRequest(bucketName, key);
FileStream s = new FileStream(DownLoadPath,FileMode.OpenOrCreate);
client.GetObject(ReadRequest,s);
}
static void Main(string[] args)
{
/////////////////////////////测试代码/////////////////////////////////////////////
string accessId = "NmBlLQLtoPjNy1fV";
string accessKey = "Ofp39rtQZPgzlxPGgtSE9MTWtPTXvW";
string strFullFilePath = "D:\\MyFile\\VBR.mp3";
string strAddFilePath = "D:\\MyFile\\不是你的错.mp3";
OssClient client = new OssClient(accessId, accessKey);
string bucketName = "haolipeng";
string key = "AddFileEndTest.mp4";
//测试在尾部添加数据后的文件是否可以增加成功
//string path = "D:\\haolipeng1.mp4";
//ReadFile(path, client, bucketName, key);
//Console.WriteLine("下载完成");
//分块上传请求 (初始化状态)
InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(bucketName, key);
InitiateMultipartUploadResult initResult = client.InitiateMultipartUpload(initRequest);
//设置每块5M
int partSize = 1024 * 512;
FileInfo partFile = new FileInfo(strFullFilePath);
// 获取分块数目
int partCount = (int)(partFile.Length / partSize);
bool bNoDivided = false;
if (partFile.Length % partSize != 0)
{
partCount++;
bNoDivided = true;
}
// 新建一个List保存每个分块上传后的ETag和PartNumber
List<PartETag> partETags = new List<PartETag>();
//分块上传
int i = 0;
for (i = 0; i < partCount; i++)
{
//当最后一块小于partSize时,不传数据
if (i == partCount - 1 && true == bNoDivided)
{
break;
}
// 获取文件流
FileStream fis = new FileStream(partFile.FullName, FileMode.Open);
//每块开始位置
long skipBytes = partSize * i;
fis.Position = skipBytes;
// fis.skip(skipBytes);
// 计算每个分块的大小
long size = partSize < partFile.Length - skipBytes ?
partSize : partFile.Length - skipBytes;
// 创建UploadPartRequest,上传分块
UploadPartRequest uploadPartRequest = new UploadPartRequest(bucketName, key, initResult.UploadId);
uploadPartRequest.InputStream = fis;
uploadPartRequest.PartSize = size;
uploadPartRequest.PartNumber = (i + 1);
UploadPartResult uploadPartResult = client.UploadPart(uploadPartRequest);
// 将返回的PartETag保存到List中
partETags.Add(uploadPartResult.PartETag);
//关闭文件
fis.Close();
}
Console.WriteLine("第一个文件上传成功");
////////////////////////////add//////////////////////////////////////////////
FileInfo addFile = new FileInfo(strAddFilePath);
int addCount = (int)(addFile.Length / partSize);
if (addFile.Length % partSize != 0)
{
addCount++;
}
List<PartETag> addETags = new List<PartETag>();
////////////////////////////add//////////////////////////////////////////////
////////////////////////////////add//////////////////////////////////////////
for (int j = 0; j < addCount; j++)
{
// 获取文件流
FileStream fis = new FileStream(addFile.FullName, FileMode.Open);
//每块开始位置
long skipBytes = partSize * j;
fis.Position = skipBytes;
// 计算每个分块的大小
long size = partSize < addFile.Length - skipBytes ?
partSize : addFile.Length - skipBytes;
// 创建UploadPartRequest,上传分块
UploadPartRequest uploadPartRequest = new UploadPartRequest(bucketName, key, initResult.UploadId);
uploadPartRequest.InputStream = fis;
uploadPartRequest.PartSize = size;
uploadPartRequest.PartNumber = (i + 1 + j);
UploadPartResult uploadPartResult = client.UploadPart(uploadPartRequest);
// 将返回的PartETag保存到List中
addETags.Add(uploadPartResult.PartETag);
//关闭文件
fis.Close();
}
Console.WriteLine("第二个文件上传成功");
////////////////////////////////add//////////////////////////////////////////
//分块上传(完成状态)
CompleteMultipartUploadRequest completeReq = new CompleteMultipartUploadRequest(bucketName, key, initResult.UploadId);
foreach (PartETag partETag in partETags)
{
completeReq.PartETags.Add(partETag);
}
foreach (PartETag partETag in addETags)
{
completeReq.PartETags.Add(partETag);
}
//完成分块上传
CompleteMultipartUploadResult completeResult = client.CompleteMultipartUpload(completeReq);
// 返回最终文件的MD5,用于用户进行校验
// Console.WriteLine(completeResult.ETag);
Console.WriteLine("文件整体合并成功");
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using Aliyun.OpenServices.OpenStorageService;
using System.IO;
using System.Collections;
namespace TestAddFile
{
class Program
{
static void ReadFile(string DownLoadPath, OssClient client,string bucketName,string key)
{
GetObjectRequest ReadRequest = new GetObjectRequest(bucketName, key);
FileStream s = new FileStream(DownLoadPath,FileMode.OpenOrCreate);
client.GetObject(ReadRequest,s);
}
static void Main(string[] args)
{
/////////////////////////////测试代码/////////////////////////////////////////////
string accessId = "NmBlLQLtoPjNy1fV";
string accessKey = "Ofp39rtQZPgzlxPGgtSE9MTWtPTXvW";
string strFullFilePath = "D:\\MyFile\\VBR.mp3";
string strAddFilePath = "D:\\MyFile\\不是你的错.mp3";
OssClient client = new OssClient(accessId, accessKey);
string bucketName = "haolipeng";
string key = "AddFileEndTest.mp4";
//测试在尾部添加数据后的文件是否可以增加成功
//string path = "D:\\haolipeng1.mp4";
//ReadFile(path, client, bucketName, key);
//Console.WriteLine("下载完成");
//分块上传请求 (初始化状态)
InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(bucketName, key);
InitiateMultipartUploadResult initResult = client.InitiateMultipartUpload(initRequest);
//设置每块5M
int partSize = 1024 * 512;
FileInfo partFile = new FileInfo(strFullFilePath);
// 获取分块数目
int partCount = (int)(partFile.Length / partSize);
bool bNoDivided = false;
if (partFile.Length % partSize != 0)
{
partCount++;
bNoDivided = true;
}
// 新建一个List保存每个分块上传后的ETag和PartNumber
List<PartETag> partETags = new List<PartETag>();
//分块上传
int i = 0;
for (i = 0; i < partCount; i++)
{
//当最后一块小于partSize时,不传数据
if (i == partCount - 1 && true == bNoDivided)
{
break;
}
// 获取文件流
FileStream fis = new FileStream(partFile.FullName, FileMode.Open);
//每块开始位置
long skipBytes = partSize * i;
fis.Position = skipBytes;
// fis.skip(skipBytes);
// 计算每个分块的大小
long size = partSize < partFile.Length - skipBytes ?
partSize : partFile.Length - skipBytes;
// 创建UploadPartRequest,上传分块
UploadPartRequest uploadPartRequest = new UploadPartRequest(bucketName, key, initResult.UploadId);
uploadPartRequest.InputStream = fis;
uploadPartRequest.PartSize = size;
uploadPartRequest.PartNumber = (i + 1);
UploadPartResult uploadPartResult = client.UploadPart(uploadPartRequest);
// 将返回的PartETag保存到List中
partETags.Add(uploadPartResult.PartETag);
//关闭文件
fis.Close();
}
Console.WriteLine("第一个文件上传成功");
////////////////////////////add//////////////////////////////////////////////
FileInfo addFile = new FileInfo(strAddFilePath);
int addCount = (int)(addFile.Length / partSize);
if (addFile.Length % partSize != 0)
{
addCount++;
}
List<PartETag> addETags = new List<PartETag>();
////////////////////////////add//////////////////////////////////////////////
////////////////////////////////add//////////////////////////////////////////
for (int j = 0; j < addCount; j++)
{
// 获取文件流
FileStream fis = new FileStream(addFile.FullName, FileMode.Open);
//每块开始位置
long skipBytes = partSize * j;
fis.Position = skipBytes;
// 计算每个分块的大小
long size = partSize < addFile.Length - skipBytes ?
partSize : addFile.Length - skipBytes;
// 创建UploadPartRequest,上传分块
UploadPartRequest uploadPartRequest = new UploadPartRequest(bucketName, key, initResult.UploadId);
uploadPartRequest.InputStream = fis;
uploadPartRequest.PartSize = size;
uploadPartRequest.PartNumber = (i + 1 + j);
UploadPartResult uploadPartResult = client.UploadPart(uploadPartRequest);
// 将返回的PartETag保存到List中
addETags.Add(uploadPartResult.PartETag);
//关闭文件
fis.Close();
}
Console.WriteLine("第二个文件上传成功");
////////////////////////////////add//////////////////////////////////////////
//分块上传(完成状态)
CompleteMultipartUploadRequest completeReq = new CompleteMultipartUploadRequest(bucketName, key, initResult.UploadId);
foreach (PartETag partETag in partETags)
{
completeReq.PartETags.Add(partETag);
}
foreach (PartETag partETag in addETags)
{
completeReq.PartETags.Add(partETag);
}
//完成分块上传
CompleteMultipartUploadResult completeResult = client.CompleteMultipartUpload(completeReq);
// 返回最终文件的MD5,用于用户进行校验
// Console.WriteLine(completeResult.ETag);
Console.WriteLine("文件整体合并成功");
}
}
}
相关文章推荐
- c# 添加图片水印,可以指定水印位置+生成缩略图
- c# 添加图片水印,可以指定水印位置+生成缩略图
- 快速测试指定IP和端口是否可以访问
- 2012年11月23日-c#生成Excel文件在服务器并且可以导出到本地
- c# 添加图片水印,可以指定水印位置+生成缩略图
- 判断XML文件是否存在,不存在就创建一个XMl文件,存在就在里面添加一条数据
- access函数测试指定路径中是否有某个文件存在
- 测试指定udp端口是否可以绑定
- JPA学习笔记---JPA实体Bean的建立+配置文件+junit测试+自动生成(对应实体Bean的)数据库表+插入数据
- c# 添加图片水印,可以指定水印位置+生成缩略图
- ASP.NET 将 DataView 数据导出到服务器上生成Excel文件
- 如何可以将图片生成为指定300*300像素的图片文件?
- 动软中,在连接服务器时,出现“添加服务器配置失败,请检查是否有写入权限或文件是否存在“错误
- c# 添加图片水印,可以指定水印位置+生成缩略图
- 使用websphere开发J2EE项目时,在服务器配置文件->“环境”->“类路径”中添加的ORACLE的JDBC文件classes12.zip文件是否有效呢?
- 【qtp脚本】实现自动创建目录并通过测试写字板生成指定个数的文件
- 限制服务器上的指定用户可以拥有的磁盘空间或文件个数
- 检测你的数据文件是否被移动到其他的服务器
- 动软代码生成器,出现”添加服务器配置失败,请检查是否有写入权限或文件是否存在“的错误的解决办法