x-file-storage.dromara.org |. x-file-storage.xuyanwu.cn |
Eine Codezeile speichert Dateien lokal, 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 und andere mit dem S3-Protokoll kompatible Speicherplattformen. Alle unterstützten Speicherplattformen anzeigen
Nachdem Sie über WebDAV eine Verbindung zu Alist hergestellt haben, können Sie gängige Speicherdienste wie Baidu Cloud Disk, Tianyi Cloud Disk, Alibaba Cloud Disk und Thunder Cloud Disk verwenden, um die von Alist unterstützten Speicherplattformen anzuzeigen.
? Unterstützt die Migration von Dateien zwischen verschiedenen Speicherplattformen. Weitere Informationen finden Sie unter Migrationsdateien
GitHub: https://github.com/dromara/x-file-storage
Gitee: https://gitee.com/dromara/x-file-storage
Hier ist ein kurzer Aktualisierungsdatensatz. Sehen Sie sich den detaillierten Aktualisierungsdatensatz an
2.2.1
Das Problem von Hash-Berechnungsfehlern in einigen Fällen und das Problem, dass der vorsignierte URL-Aktualisierungsdatensatz von Qiniu Cloud Kodo unbrauchbar war, wurde behoben
2.2.0
behebt eine große Anzahl von Problemen, fügt neue Dateien hinzu, listet Dateien auf, rekonstruiert vorsignierte URLs, unterstützt Client-Upload, Download, Löschen und andere Vorgänge, fügt Solon-Plugin hinzu, optimiert Funktionen wie den manuellen mehrteiligen Upload, Weitere Informationen finden Sie im Aktualisierungsdatensatz
2.1.0
behebt eine große Anzahl von Problemen, fügt die Speicherplattformen FastDFS und Azure Blob Storage hinzu und fügt Funktionen wie das Kopieren und Verschieben (Umbenennen) von Dateien, den manuellen mehrteiligen Upload (fortsetzbarer Upload) und die Berechnung von Hashes hinzu für Einzelheiten.
2.0.0
wird der Dromara-Open-Source-Community gespendet, ändert den Projektnamen, den Paketnamen, optimiert die Projektstruktur, unterstützt Metadaten-Metadaten usw. Sie müssen auf ein Upgrade von der alten Version achten. Bitte überprüfen Sie den Update-Datensatz für Details .
Klicken Sie auf „Schnellstart“, um zu sehen, wie Sie alle Speicherplattformen verwenden!
Hier wird pom.xml
Cloud OSS als Beispiel verwendet. Solon
Standardumgebung wird in SpringBoot
verwendet.
<!-- 引入本项目 -->
< 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 >
Fügen Sie der Konfigurationsdatei application.yml
die folgende Grundkonfiguration hinzu
Bezüglich der Unterschiede zwischen Konfigurationsdateien und verschiedenen Pfaden (Pfaden) in FileInfo lesen Sie bitte die häufig gestellten Fragen
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/ # 基础路径
Fügen Sie der Startklasse die Annotation @EnableFileStorage
hinzu
@ EnableFileStorage
@ SpringBootApplication
public class SpringFileStorageTestApplication {
public static void main ( String [] args ) {
SpringApplication . run ( SpringFileStorageTestApplication . class , args );
}
}
Unterstützt File, MultipartFile, UploadedFile, byte[], InputStream, URL, URI, String, HttpServletRequest und große Dateien werden automatisch in Teilen hochgeladen. Wenn Sie weitere Methoden unterstützen möchten, lesen Sie bitte das Kapitel zum Dateiadapter
@ 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 );
//其它更多操作
Wenn Sie den Dateidatensatz in der Datenbank speichern, können Sie auch bequemer auf der Grundlage der URL arbeiten. Weitere Informationen finden Sie im Kapitel zum Speichern von Upload-Datensätzen.
//直接从数据库中获取 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" );
//其它更多操作
Klicken Sie auf „Schnellstart“, um zu sehen, wie Sie alle Speicherplattformen verwenden!
Der Quellcode von X File Storage ist in zwei Zweige unterteilt, mit folgenden Funktionen:
Zweig | Wirkung |
---|---|
hauptsächlich | Der Hauptzweig, der von der Release-Version verwendete Zweig, stimmt mit dem von der Zentralbibliothek übermittelten JAR überein und erhält keine PR oder Änderung. |
Entwickler | Entwicklungszweig, Änderungen oder PR akzeptieren |
Wenn Sie ein Problem-Feedback einreichen, geben Sie bitte die X-File-Storage-Version, die zugehörige abhängige Bibliotheksversion, Konfigurationsparameter und den Problemcode an.
Gitee-Problem
GitHub-Problem
Jeder ist willkommen, zu X File Storage beizutragen und Code beizutragen. Aus Gründen der Benutzerfreundlichkeit und Wartbarkeit muss die einzureichende PR (Pull-Anfrage) einigen Spezifikationen entsprechen. Die Spezifikationen lauten wie folgt:
X File Storage dankt allen für Ihr Vertrauen und Ihre Unterstützung. Wenn Sie X File Storage in Ihrem Projekt verwendet haben, hoffe ich, dass Sie Ihre Firmen- oder Organisationsinformationen hinterlassen können (Firmen- oder Organisationsname, offizielle Website-Adresse, Logobild anzeigen).
Ihre Unternehmensinformationen werden auf der offiziellen Website des Projekts angezeigt:
x-file-storage.dromara.org
x-file-storage.xuyanwu.cn
spring-file-storage.xuyanwu.cn
Registrieren Sie sich auf Gitee. Registrieren Sie sich auf GitHub
Wenn Sie der Meinung sind, dass dieses Projekt gut ist, können Sie auf einen Stern klicken oder spenden, um dem Autor das Essen von scharfen Streifen zu ermöglichen. Wenn Sie keine Belohnung wünschen, können Sie den letzten Code mit Alipay scannen, um einen roten Umschlag zu erhalten Ich möchte meine Dankbarkeit zum Ausdruck bringen ^_^
Oder klicken Sie auf den Link unten, scrollen Sie zum Ende der Seite und klicken Sie auf „Spenden“.
Spenden Sie auf Gitee
Scannen Sie den QR-Code oben, um 99 Yuan zu spenden, und senden Sie mir den Screenshot QQ1171736840
um der VIP-Kommunikationsgruppe beizutreten (wenn die Spende ein Jahr überschreitet, müssen Sie erneut spenden, andernfalls wird sie gelöscht).
Sie können auch auf klicken, um eine kostenlose Kommunikationsgruppe hinzuzufügen, um gemeinsam zu kommunizieren