我想將文件上傳至阿裡雲的OSS中,點擊button就會顯示連接已重置,不知道是端口的問題還是其他的?請各位大神指教~
設置method="post" enctype="multipart/form-data",裡面有一個 和上傳按鈕button。protected void button_Click(object sender, EventArgs e)
{
HttpRequest request = System.Web.HttpContext.Current.Request;
HttpFileCollection FileCollect = request.Files; //獲取成HttpFileCollection對象集合,集合中包含了上傳所有內容,所有的上傳的內容都在集合裡了
if (FileCollect.Count > 0) //如果集合的數量大於0
{
foreach (string str in FileCollect)
{
HttpPostedFile file = FileCollect[str]; //用key獲取單個文件對象HttpPostedFile
string Path = "/" + FileCollect.Get(str).FileName;
string AbsolutePath = Server.MapPath(Path);
MultipartUploadSample.UploadMultipart("cpu-maitian", file_value.Text.ToString(), AbsolutePath, 1024 * 1024);
}
}
}
}
namespace Aliyun.OpenServices.OpenStorageService.Samples
{
public class MultipartUploadSample
{
private const string _accessId = "";
private const string _accessKey = "";
private const string _endpoint = "http://oss-cn-beijing.aliyuncs.com";
private static readonly OssClient _ossClient = new OssClient(_endpoint, _accessId, _accessKey);
/// <summary>
/// 分片上傳。
/// </summary>
/// <param name="bucketName"><see cref="Bucket"/></param>
/// <param name="objectName"><see cref="OssObject"/></param>
/// <param name="fileToUpload">指定分片上傳文件路徑</param>
/// <param name="partSize">分片大小(單位:字節)</param>
public static void UploadMultipart(String bucketName, String objectName, String fileToUpload, int partSize)
{
var uploadId = InitiateMultipartUpload(bucketName, objectName);
var partETags = BeginUploadPart(bucketName, objectName, fileToUpload, uploadId, partSize);
var completeResult = CompleteUploadPart(bucketName, objectName, uploadId, partETags);
Console.WriteLine("Upload multipart result : " + completeResult.Location);
}
/// <summary>
/// 分片拷貝。
/// </summary>
/// <param name="targetBucket">目標<see cref="Bucket"/></param>
/// <param name="targetKey">目標<see cref="OssObject"/></param>
/// <param name="sourceBucket">源<see cref="Bucket"/></param>
/// <param name="sourceKey">源<see cref="OssObject"/></param>
/// <param name="partSize">分片大小(單位:字節)</param>
public static void UploadMultipartCopy(String targetBucket, String targetKey, String sourceBucket, String sourceKey, int partSize)
{
var uploadId = InitiateMultipartUpload(targetBucket, targetKey);
var partETags = BeginUploadPartCopy(targetBucket, targetKey, sourceBucket, sourceKey, uploadId, partSize);
var completeResult = CompleteUploadPart(targetBucket, targetKey, uploadId, partETags);
Console.WriteLine("Upload multipart copy result : ");
Console.WriteLine(completeResult.Location);
}
private static string InitiateMultipartUpload(String bucketName, String objectName)
{
var request = new InitiateMultipartUploadRequest(bucketName, objectName);
var result = _ossClient.InitiateMultipartUpload(request);
return result.UploadId;
}
private static List<PartETag> BeginUploadPart(String bucketName, String objectName, String fileToUpload,
String uploadId, int partSize)
{
var fileSize = -1;
using (var fs = File.Open(fileToUpload, FileMode.Open))
{
fileSize = (int)fs.Length;
}
var partCount = fileSize / partSize;
if (fileSize % partSize != 0)
{
partCount++;
}
var partETags = new List<PartETag>();
for (var i = 0; i < partCount; i++)
{
using (FileStream fs = File.Open(fileToUpload, FileMode.Open))
{
var skipBytes = (long)partSize * i;
fs.Seek(skipBytes, 0);
var size = (partSize < fileSize - skipBytes) ? partSize : (fileSize - skipBytes);
var request = new UploadPartRequest(bucketName, objectName, uploadId);
request.InputStream = fs;
request.PartSize = size;
request.PartNumber = i + 1;
var result = _ossClient.UploadPart(request);
partETags.Add(result.PartETag);
}
}
return partETags;
}
private static List<PartETag> BeginUploadPartCopy(String targetBucket, String targetKey, String sourceBucket, String sourceKey,
String uploadId, int partSize)
{
var metadata = _ossClient.GetObjectMetadata(sourceBucket, sourceKey);
var fileSize = metadata.ContentLength;
var partCount = (int)fileSize / partSize;
if (fileSize % partSize != 0)
{
partCount++;
}
var partETags = new List<PartETag>();
for (var i = 0; i < partCount; i++)
{
var skipBytes = (long)partSize * i;
var size = (partSize < fileSize - skipBytes) ? partSize : (fileSize - skipBytes);
var request =
new UploadPartCopyRequest(targetBucket, targetKey, sourceBucket, sourceKey, uploadId);
request.PartSize = size;
request.PartNumber = i + 1;
request.BeginIndex = skipBytes;
var result = _ossClient.UploadPartCopy(request);
partETags.Add(result.PartETag);
}
return partETags;
}
private static CompleteMultipartUploadResult CompleteUploadPart(String bucketName, String objectName,
String uploadId, List<PartETag> partETags)
{
var completeMultipartUploadRequest =
new CompleteMultipartUploadRequest(bucketName, objectName, uploadId);
foreach (var partETag in partETags)
{
completeMultipartUploadRequest.PartETags.Add(partETag);
}
return _ossClient.CompleteMultipartUpload(completeMultipartUploadRequest);
}
}
將文件上傳至阿裡雲的OSS中,你的程序中有登錄嗎?沒通過身份驗證連接當然會被重置了。