x-ファイル-ストレージ.dromara.org | x-ファイル-ストレージ.xuyanwu.cn |
1 行のコードでファイルをローカルに保存します。FTP、SFTP、WebDAV、Alibaba Cloud OSS、Huawei Cloud OBS、Qiniu Cloud Kodo、Tencent Cloud COS、Baidu Cloud BOS、Youpai Cloud USS、MinIO、Amazon S3、Google Cloud Storage、FastDFS、Azure Blob Storage、Cloudflare R2、Kingsoft Cloud KS3、Meituan Cloud MSS、JD Cloud OSS、Tianyi Cloud OOS、Mobile Cloud EOS、Woyun OSS、 NetEase Shufan NOS、Ucloud US3、Qingyun QingStor、Ping An Cloud OBS、Shouyun OSS、IBM COS、および S3 プロトコルと互換性のあるその他のストレージ プラットフォーム。サポートされているすべてのストレージ プラットフォームを表示する
WebDAV 経由で Alist に接続すると、Baidu Cloud Disk、Tianyi Cloud Disk、Alibaba Cloud Disk、Thunder Cloud Disk などの一般的なストレージ サービスを使用して、Alist がサポートするストレージ プラットフォームを表示できます。
? 異なるストレージ プラットフォーム間でのファイルの移行をサポートします。詳細については、移行ファイルを参照してください。
GitHub: https://github.com/dromara/x-file-storage
Gitee: https://gitee.com/dromara/x-file-storage
ここでは簡単な更新記録を示します。詳細な更新記録を表示します
2.2.1
場合によってはハッシュ計算エラーが発生する問題と、Qiniu Cloud Kodo の事前署名付き URL が更新レコードを使用できない問題を修正しました。
2.2.0
多数の問題が修正され、新しいファイルの追加、ファイルの一覧表示、署名付き URL の再構築、クライアントのアップロード、ダウンロード、削除などの操作のサポート、Solon プラグインの追加、手動マルチパート アップロードなどの機能の最適化、詳細については更新記録を確認してください2.1.0
多数の問題が修正され、ストレージ プラットフォーム FastDFS と Azure Blob Storage が追加され、ファイルのコピーと移動 (名前変更)、手動マルチパート アップロード (再開可能なアップロード)、ハッシュの計算などの機能が追加されています。更新レコードをご確認ください。詳細については。
2.0.0
は dromara オープンソース コミュニティに寄贈され、プロジェクト名、パッケージ名の変更、プロジェクト構造の最適化、Metadata メタデータのサポートなどが行われます。旧バージョンからのアップグレードには注意が必要です。詳細については更新記録を確認してください。 。
すべてのストレージ プラットフォームの使用方法を表示するには、[クイック スタート] をクリックしてください。
ここでは、Alibaba Cloud OSS を例として、 pom.xml
このプロジェクトに導入されています。ここでは、 Solon
環境参照がSpringBoot
とは別に使用されます。
<!-- 引入本项目 -->
< dependency >
< groupId >org.dromara.x-file-storage</ groupId >
< artifactId >x-file-storage-spring</ artifactId >
< version >2.2.1</ version >
</ dependency >
<!-- 引入 阿里云 OSS SDK,如果使用其它存储平台,就引入对应的 SDK -->
< dependency >
< groupId >com.aliyun.oss</ groupId >
< artifactId >aliyun-sdk-oss</ artifactId >
< version >3.16.1</ version >
</ dependency >
次の基本構成をapplication.yml
構成ファイルに追加します。
設定ファイルとFileInfoの各種パス(パス)の違いについては、よくある質問をご参照ください。
dromara :
x-file-storage : #文件存储配置
default-platform : aliyun-oss-1 #默认使用的存储平台
aliyun-oss :
- platform : aliyun-oss-1 # 存储平台标识
enable-storage : true # 启用存储
access-key : ??
secret-key : ??
end-point : ??
bucket-name : ??
domain : ?? # 访问域名,注意“/”结尾,例如:https://abc.oss-cn-shanghai.aliyuncs.com/
base-path : test/ # 基础路径
@EnableFileStorage
アノテーションをスタートアップ クラスに追加します。
@ EnableFileStorage
@ SpringBootApplication
public class SpringFileStorageTestApplication {
public static void main ( String [] args ) {
SpringApplication . run ( SpringFileStorageTestApplication . class , args );
}
}
File、MultipartFile、UploadedFile、byte[]、InputStream、URL、URI、String、HttpServletRequest をサポートしており、大きなファイルは自動的に分割してアップロードされます。さらに多くのメソッドをサポートしたい場合は、ファイル アダプターの章をお読みください。
@ RestController
public class FileDetailController {
@ Autowired
private FileStorageService fileStorageService ; //注入实列
/**
* 上传文件
*/
@ PostMapping ( "/upload" )
public FileInfo upload ( MultipartFile file ) {
//只需要这一行代码即可上传成功
return fileStorageService . of ( file ). upload ();
}
/**
* 上传文件,成功返回文件 url
*/
@ PostMapping ( "/upload2" )
public String upload2 ( MultipartFile file ) {
FileInfo fileInfo = fileStorageService . of ( file )
. setPath ( "upload/" ) //保存到相对路径下,为了方便管理,不需要可以不写
. setSaveFilename ( "image.jpg" ) //设置保存的文件名,不需要可以不写,会随机生成
. setObjectId ( "0" ) //关联对象id,为了方便管理,不需要可以不写
. setObjectType ( "0" ) //关联对象类型,为了方便管理,不需要可以不写
. putAttr ( "role" , "admin" ) //保存一些属性,可以在切面、保存上传记录、自定义存储平台等地方获取使用,不需要可以不写
. upload (); //将文件上传到对应地方
return fileInfo == null ? "上传失败!" : fileInfo . getUrl ();
}
/**
* 上传图片,成功返回文件信息
* 图片处理使用的是 https://github.com/coobird/thumbnailator
*/
@ PostMapping ( "/upload-image" )
public FileInfo uploadImage ( MultipartFile file ) {
return fileStorageService . of ( file )
. image ( img -> img . size ( 1000 , 1000 )) //将图片大小调整到 1000*1000
. thumbnail ( th -> th . size ( 200 , 200 )) //再生成一张 200*200 的缩略图
. upload ();
}
/**
* 上传文件到指定存储平台,成功返回文件信息
*/
@ PostMapping ( "/upload-platform" )
public FileInfo uploadPlatform ( MultipartFile file ) {
return fileStorageService . of ( file )
. setPlatform ( "aliyun-oss-1" ) //使用指定的存储平台
. upload ();
}
/**
* 直接读取 HttpServletRequest 中的文件进行上传,成功返回文件信息
* 使用这种方式有些注意事项,请查看文档 基础功能-上传 章节
*/
@ PostMapping ( "/upload-request" )
public FileInfo uploadPlatform ( HttpServletRequest request ) {
return fileStorageService . of ( request ). upload ();
}
}
//手动构造文件信息,可用于其它操作
FileInfo fileInfo = new FileInfo ()
. setPlatform ( "huawei-obs-1" )
. setBasePath ( "test/" )
. setPath ( "aa/" )
. setFilename ( "image.png" )
. setThFilename ( "image.png.min.jpg" );
//文件是否存在
boolean exists = fileStorageService . exists ( fileInfo );
//下载
byte [] bytes = fileStorageService . download ( fileInfo ). bytes ();
//删除
fileStorageService . delete ( fileInfo );
//其它更多操作
ファイルレコードをデータベースに保存すると、URL に基づいた操作もより便利になります。詳細については、アップロードレコードの保存に関する章をお読みください。
//直接从数据库中获取 FileInfo 对象,更加方便执行其它操作
FileInfo fileInfo = fileStorageService . getFileInfoByUrl ( "https://abc.def.com/test/aa/image.png" );
//文件是否存在
boolean exists = fileStorageService . exists ( "https://abc.def.com/test/aa/image.png" );
//下载
byte [] bytes = fileStorageService . download ( "https://abc.def.com/test/aa/image.png" ). bytes ();
//删除
fileStorageService . delete ( "https://abc.def.com/test/aa/image.png" );
//其它更多操作
すべてのストレージ プラットフォームの使用方法を表示するには、[クイック スタート] をクリックしてください。
X File Storage のソース コードは 2 つのブランチに分かれており、次の機能があります。
支店 | 効果 |
---|---|
主要 | メイン ブランチ (リリース バージョンで使用されるブランチ) は、中央ライブラリによって送信された jar と一致しており、PR や変更は一切受けません。 |
開発者 | 開発ブランチ、変更または PR を受け入れる |
問題のフィードバックを送信する場合は、X File Storage のバージョン、関連する依存ライブラリのバージョン、構成パラメータ、および問題コードを指定してください。
ジーティー号
GitHubの問題
誰でも X File Storage に貢献し、コードを貢献することができます。使いやすさと保守性を高めるために、送信する必要がある PR (プル リクエスト) の仕様は次のとおりです。
X File Storage は皆様の信頼とサポートに感謝します。プロジェクトで X File Storage を使用したことがある場合は、会社または組織の情報 (会社名または組織名、公式 Web サイトのアドレス、表示ロゴの画像) を残していただければ幸いです。
貴社の情報がプロジェクト公式ウェブサイトに掲載されます。
x-file-storage.dromara.org
x-ファイルストレージ.xuyanwu.cn
spring-file-storage.xuyanwu.cn
Gitee に登録 GitHub に登録
このプロジェクトが良いと思われる場合は、スターをクリックするか、著者にスパイシーなストリップを食べるように寄付してください。報酬を受け取りたくない場合は、Alipay で最後のコードをスキャンして赤い封筒を受け取ることができます。感謝の意を表したいと思います^_^
または、下のリンクをクリックし、ページの一番下までスクロールして「寄付」をクリックしてください。
Gitee で寄付する
上の QR コードをスキャンして 99 元を寄付し、スクリーンショットをQQ1171736840
に送って VIP コミュニケーション グループに参加してください (1 年を超えた場合は再度寄付する必要があり、そうでない場合はクリアされます)
クリックして無料のコミュニケーション グループを追加し、一緒にコミュニケーションすることもできます