x-file-storage.dromara.org | x-file-storage.xuyanwu.cn |. สปริงไฟล์-storage.xuyanwu.cn
รหัสหนึ่งบรรทัดจัดเก็บไฟล์ในเครื่อง, FTP, SFTP, WebDAV, Alibaba Cloud OSS, Huawei Cloud OBS, Qiniu Cloud Kodo, Tencent Cloud COS, Baidu Cloud BOS, Youpai Cloud USS, MiniIO, Amazon S3, Google Cloud Storage, FastDFS, Azure พื้นที่เก็บข้อมูล Blob, 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 ดูแพลตฟอร์มการจัดเก็บข้อมูลที่รองรับทั้งหมด
หลังจากเชื่อมต่อกับ Alist ผ่าน WebDAV แล้ว คุณจะใช้บริการจัดเก็บข้อมูลทั่วไปได้ เช่น 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 ไม่สามารถใช้งานได้
2.2.0
แก้ไขปัญหาจำนวนมาก, เพิ่มไฟล์ใหม่, แสดงรายการไฟล์, สร้าง URL ที่ลงนามล่วงหน้าใหม่, รองรับการอัพโหลดไคลเอนต์, ดาวน์โหลด, ลบและการดำเนินการอื่น ๆ, เพิ่มปลั๊กอิน Solon, ปรับฟังก์ชั่นให้เหมาะสม เช่น การอัพโหลดหลายส่วนด้วยตนเอง, ตรวจสอบบันทึกการอัพเดตเพื่อดูรายละเอียด
2.1.0
แก้ไขปัญหาจำนวนมาก เพิ่มแพลตฟอร์มการจัดเก็บข้อมูล FastDFS และ Azure Blob Storage และเพิ่มฟังก์ชันต่างๆ เช่น การคัดลอกและการย้าย (การเปลี่ยนชื่อ) ไฟล์ การอัปโหลดหลายส่วนด้วยตนเอง (การอัปโหลดต่อ) และการคำนวณแฮช โปรดตรวจสอบบันทึกการอัปเดต เพื่อดูรายละเอียด
2.0.0
ได้รับการบริจาคให้กับชุมชนโอเพ่นซอร์ส dromara เปลี่ยนชื่อโปรเจ็กต์ ชื่อแพ็คเกจ ปรับโครงสร้างโปรเจ็กต์ให้เหมาะสม รองรับเมตาดาต้าเมตาดาต้า ฯลฯ คุณต้องใส่ใจกับการอัปเกรดจากเวอร์ชันเก่า โปรดตรวจสอบบันทึกการอัปเดตเพื่อดูรายละเอียด .
คลิกเริ่มต้นอย่างรวดเร็วเพื่อดูวิธีใช้แพลตฟอร์มการจัดเก็บข้อมูลทั้งหมด!
ที่นี่เราใช้ Alibaba Cloud OSS เป็นตัวอย่าง pom.xml
ถูกนำมาใช้ในโปรเจ็กต์นี้ ค่าเริ่มต้นที่ Solon
คือสภาพแวดล้อม SpringBoot
ถูกใช้ใน Solon
<!-- 引入本项目 -->
< 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 );
}
}
รองรับไฟล์, 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 แบ่งออกเป็นสองสาขา โดยมีฟังก์ชันดังต่อไปนี้:
สาขา | ผล |
---|---|
หลัก | สาขาหลักซึ่งเป็นสาขาที่ใช้ในเวอร์ชันวางจำหน่ายนั้นสอดคล้องกับ jar ที่ส่งมาจากห้องสมุดกลางและไม่ได้รับการประชาสัมพันธ์หรือแก้ไขใด ๆ |
ผู้พัฒนา | สาขาพัฒนา รับดัดแปลงหรือประชาสัมพันธ์ |
เมื่อส่งความคิดเห็นเกี่ยวกับปัญหา โปรดระบุเวอร์ชันของพื้นที่จัดเก็บไฟล์ X เวอร์ชันไลบรารีที่เกี่ยวข้อง พารามิเตอร์การกำหนดค่า และรหัสปัญหา
ปัญหากีต้า
ปัญหา GitHub
ใครก็ตามสามารถมีส่วนร่วมกับ X File Storage และมีส่วนร่วมโค้ดได้ เพื่อความสะดวกในการใช้งานและการบำรุงรักษา PR (pull request) ที่ต้องส่งจะต้องเป็นไปตามข้อกำหนดบางประการดังต่อไปนี้:
X File Storage ขอขอบคุณทุกคนสำหรับความไว้วางใจและการสนับสนุน หากคุณใช้ X File Storage ในโครงการของคุณ ฉันหวังว่าคุณจะสามารถฝากข้อมูลบริษัทหรือองค์กรของคุณได้ (ชื่อบริษัทหรือองค์กร ที่อยู่เว็บไซต์อย่างเป็นทางการ รูปภาพโลโก้ที่แสดง)
ข้อมูลบริษัทของคุณจะถูกแสดงบนเว็บไซต์อย่างเป็นทางการของโครงการ:
x-file-storage.dromara.org
x-file-storage.xuyanwu.cn
สปริงไฟล์-storage.xuyanwu.cn
ลงทะเบียนบน Gitee ลงทะเบียนบน GitHub
หากคุณคิดว่าโครงการนี้ดี คุณสามารถคลิกดาวหรือบริจาคเพื่อเลี้ยงผู้เขียนให้กินเผ็ดได้~ อยากจะแสดงความขอบคุณ ^_^
หรือคลิกลิงค์ด้านล่างเลื่อนไปที่ด้านล่างของหน้าแล้วคลิก "บริจาค"
บริจาคได้ที่ Gitee
สแกนโค้ด QR ด้านบนเพื่อบริจาค 99 หยวน และส่งภาพหน้าจอมาให้ฉัน QQ1171736840
เพื่อเข้าร่วมกลุ่มการสื่อสาร VIP (หากเกินหนึ่งปีคุณต้องบริจาคอีกครั้ง ไม่เช่นนั้นจะถูกล้าง)
คุณยังสามารถคลิกเพื่อเพิ่มกลุ่มการสื่อสารฟรีเพื่อสื่อสารร่วมกันได้