aliyun_oss文件夹内的文件上传

$path----本地需要上传的路径

$scanFiles---记录被扫描的文件名,初次进入可传空数组

function traverse($path = '.',&$scanFiles) {

$current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false
while(($file = readdir($current_dir)) !== false) {    //readdir()返回打开目录句柄中的一个条目
$sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径
if($file == '.' || $file == '..') {
continue;
} else if(is_dir($sub_dir)) {    //如果是目录,进行递归
//echo 'Directory ' . $file . ':<br>';
traverse($sub_dir,$scanFiles);
} else {    //如果是文件,直接输出
if($file != 'Thumbs.db' ){
$scanFiles[] = $path . DIRECTORY_SEPARATOR . $file ;

}
}
}

}


最后返回$scanFiles

foreach($scanFiles as $key => $aFile){
// 先把本地的example.jpg上传到指定$bucket, 命名为$object
$ossClient->uploadFile(BUCKET_NAME,"www.meidouchina.com/".str_replace('\\','/',$aFile),$aFile);
}

做个循环上传就ok了

$ossClient->uploadFile(aliyun_oss的存储空间名称 , 需要放到阿里云oss上的路径,需上传的本地文件路径 )





以下是我php的demo,大家仅查看对自己有用的就行了,没用的直接忽略,我把这个丢上来仅仅是为了我之后能偷懒而已

error_reporting(E_ALL);
define('CURSCRIPT', 'index');
require("libraries/common.inc.php");
require("share.inc.php");
//render("member");


//自定义
//OSS 容器名
define('BUCKET_NAME', 'meidou');
//指定遍历目录
define('OBJ_DIR', '.'.DIRECTORY_SEPARATOR.'attachment'.DIRECTORY_SEPARATOR.'video');


//用目录及文件名组成的路径数组
$scanFiles = array();

require_once __DIR__ . '/libraries/aliyun-oss-php-sdk/samples/Common.php';
//require_once './src/OSS/OssClient.php';
use OSS\OssClient;
$ossClient = Common::getOssClient();
if (is_null($ossClient)) die(1);
//


echo 2; 


traverse('static', $scanFiles);
//print_r($scanFiles);die;
print_r(' '.count($scanFiles).' ');


foreach($scanFiles as $key => $aFile){
// 先把本地的example.jpg上传到指定$bucket, 命名为$object
$ossClient->uploadFile(BUCKET_NAME,"www.meidouchina.com/".str_replace('\\','/',$aFile),$aFile); 
}


echo ' upload success! ';


/* 次处是单个文件夹上传的,对于文件夹里面包含文件夹的,此处不适用

$localDirectory = "static";
$prefix = "www.meidouchina.com/static";
$bucket = 'meidou';
$ossClient->uploadDir($bucket, $prefix, $localDirectory);

 */


function traverse($path = '.',&$scanFiles) {
$current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false
while(($file = readdir($current_dir)) !== false) {    //readdir()返回打开目录句柄中的一个条目
$sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径
if($file == '.' || $file == '..') {
continue;
} else if(is_dir($sub_dir)) {    //如果是目录,进行递归
//echo 'Directory ' . $file . ':<br>';
traverse($sub_dir,$scanFiles);
} else {    //如果是文件,直接输出
if($file != 'Thumbs.db' ){
$scanFiles[] = $path . DIRECTORY_SEPARATOR . $file ;

}
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Spring Boot中将文件上传OSS的指定文件夹,需要使用阿里云的OSS SDK。首先,需要在pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.11.0</version> </dependency> ``` 在上传文件之前,你需要先创建一个OSS客户端,这样你就可以操作OSS上的文件了。你可以使用以下代码创建一个OSS客户端: ```java @Configuration public class OSSConfiguration { @Value("${aliyun.oss.endpoint}") private String ossEndpoint; @Value("${aliyun.oss.accessKeyId}") private String ossAccessKeyId; @Value("${aliyun.oss.accessKeySecret}") private String ossAccessKeySecret; @Bean public OSS ossClient() { return new OSSClientBuilder().build(ossEndpoint, ossAccessKeyId, ossAccessKeySecret); } } ``` 在这个例子中,我们使用Spring的@Configuration注释,将OSS客户端作为Spring的一个Bean注册。 接下来,我们可以使用以下代码将文件上传到指定的OSS文件夹中: ```java @Service public class OSSService { @Autowired private OSS ossClient; @Value("${aliyun.oss.bucketName}") private String bucketName; public void uploadFile(String folder, String fileName, InputStream inputStream) { String key = folder + "/" + fileName; ossClient.putObject(bucketName, key, inputStream); } } ``` 在这个例子中,我们使用阿里云的OSS SDK将文件上传到指定的文件夹中。我们使用String类型的folder和fileName参数来指定文件夹文件名。我们将它们组合成一个键,然后将文件上传OSS中。注意,我们使用InputStream类型的inputStream参数来传递文件内容。 最后,我们可以在Spring的application.properties文件中设置以下属性: ```properties aliyun.oss.endpoint=your-endpoint aliyun.oss.accessKeyId=your-accessKeyId aliyun.oss.accessKeySecret=your-accessKeySecret aliyun.oss.bucketName=your-bucketName ``` 相应地,将"your-endpoint","your-accessKeyId","your-accessKeySecret"和"your-bucketName"替换为你自己的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小两

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值