目录
一、控制器代码:
using Aliyun.OSS; // 引入阿里云OSS SDK
public IActionResult Index()
{
return View();
}
public IActionResult Action(IFormFileCollection files)
{
try
{
//阿里云OSS初始化
string endpoint = "http://oss-cn-xxxx.aliyuncs.com"; // 以华东1为例
string accessKeyId = "你的AccessKeyId";
string accessKeySecret = "你的AccessKeySecret";
string bucketName = "你的Bucket名称";
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
// 遍历上传文件夹内的所有文件
foreach (var file in files)
{
if (file.Length > 0)
{
var stream = file.OpenReadStream();
//文件名称
string fileName = file.FileName;
string folderName = "文件夹名"; // 自定义文件夹名
var objectName = folderName + "/" + fileName; // 文件夹内文件路径
// 如果文件夹不存在,先创建文件夹
if (!client.DoesObjectExist(bucketName, folderName + "/"))
{
client.PutObject(bucketName, folderName + "/", new MemoryStream(new byte[0])); // 创建空文件夹
}
// 上传文件至OSS
client.PutObject(bucketName, objectName, stream);
}
}
return Ok("上传成功!");
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
二、前端.cshtml页面代码:
@{
ViewData["Title"] = "Home Page";
}
<form id="uploadForm" method="post" enctype="multipart/form-data">
<input type="file" name="files" multiple webkitdirectory directory>
<button type="submit">上传</button>
</form>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function () {
$('#uploadForm').submit(function (e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: '/你的控制器/Action',
type: 'post',
data: formData,
contentType: false,
processData: false,
success: function (result) {
console.log(result);
alert('上传成功!');
},
error: function (error) {
console.log(error);
alert('上传失败:' + error.responseText);
}
});
});
});
</script>