最初のように習慣を身につけてから見てください!!!
目次
1はじめに
今日、私はチュートリアルに従い、ついにスプリングブートを介してFastDFSにファイルをアップロードすることに気づきました。私はまだ少し興奮しています。今日のプロセスを共有し、皆さんを助けたいと思っています。
FastDFSのインストール方法やNginxの統合方法を知らない友人は、以前の2つの記事を読むことができます。
分散ファイルストレージシステムfastdfsインストールチュートリアル
FastDFSとNginxを統合して、生成されたファイルURLにブラウザからアクセスできるようにします。
2.手順
2.1クライアントをプロジェクトに複製してインポートする
FastDFSは他のフレームワークとは異なるため、対応する依存関係をMavenリポジトリから直接ダウンロードして、チュートリアルに直接従うことができます。Gitからクライアントのクローンを作成してインポートする必要があります。プロジェクトは直接使用できます。 。
したがって、最初にクライアントのクローンを作成する必要があります。
Gitツールを見つけて管理者として実行し、次のコマンドを入力して最初にクライアントのクローンを作成します
git clone https://github.com/happyfish100/fastdfs-client-java
Gitディレクトリの下にこのようなファイルが表示されます。
これはFastDFSクライアントであり、このクライアントをプロジェクトにコピーしますが、現時点ではMavenプロジェクトとして認識されないため、にインポートする必要があります。 Mavenプロジェクトの場合は、次の手順に従います。
次に、このプロジェクトをローカルウェアハウスにインストールする必要があります。この手順はオプションですが、インストールすることをお勧めします。そうしないと、プロジェクトが認識されない場合があります。
上の赤いボックス内のアドレスは、それがインストールされたアドレスです
2.2FastDFSクライアントの依存関係をインポートする
このコードを、ファイルを使用してアップロードする必要のあるモジュールにコピーします。这里有个小坑,到后面我会告诉大家怎么解决。
2.3トラッカー構成情報の作成と構成
ファイルのアップロードが必要なモジュールのリソースフォルダーの下に構成ファイルを作成します
#tracker_server服务的地址及端口号
tracker_server=tracker服务的IP:22122
#连接超时间,默认是30秒
connect_timeout=30000
#网络通讯超时时间,默认是60秒
network_timeout=60000
2.4アップロードされたファイルを書き込むためのツール
次に、ツールクラスを正式に作成できます
public static String uploadImage(MultipartFile multipartFile) throws IOException {
//这里是我定义的常量类
ConstantUtil constantUtil=new ConstantUtil();
String ImageUrl= constantUtil.getImageUrl();
//获取tracker的配置文件路径
String tracker=PmsUploadUtil.class.getResource("/tracker.conf").getPath();
//读取配置文件
try{
ClientGlobal.init(tracker);
}catch (Exception e){
e.printStackTrace();
System.out.println("配置实例化失败");
}
TrackerClient trackerClient=new TrackerClient();
TrackerServer trackerServer=trackerClient.getTrackerServer();
//创建一个StorageClient对象,需要两个参数TrackerServer对象、StorageServer的引用
StorageClient storageClient = new StorageClient(trackerServer, null);
//获取文件的byte数组
byte[]bytes=multipartFile.getBytes();
//获取文件的后缀名
String multipartFileName=multipartFile.getOriginalFilename();
int index=multipartFileName.lastIndexOf(".");
String extNamne=multipartFileName.substring(index+1);
//使用StorageClient对象上传图片;扩展名不带“.”
try {
String[] strings = storageClient.upload_file(bytes, extNamne, null);
//返回数组。包含组名和图片的路径。重组成URL链接
for (String string : strings) {
ImageUrl+="/"+string;
}
}catch (Exception e){
e.printStackTrace();
}
return ImageUrl;
}
ポイントFastDFS1.27
とFastDFS1.29
2つのバージョンがわずかに異なることに注意してください
在1.27的版本里面:
我们获取TrackerServer是通过trackerClient.getConnection()来获取的,
但是在1.29的版本里面:
我们获取TrackerServer是通过trackerClient.getTrackerServer()来获取的,
第二に、FastDFSのアップロード機能は主に次の2つです。
これら2つの関数の最初のパラメーターのみが異なります。1つ目はバイナリデータの形式でファイルをアップロードすることであり、2つ目は渡したファイルのファイルパスを介してファイルをアップロードすることです。ここでは、最初の方法でファイルをアップロードすることを選択します。ここでは、実際のニーズに応じて全員が選択します。この時点で、ファイルのアップロードの書き込みが完了し、テストできますが、申し訳ありませんが、事故がなければ、次のようなバグが発生する可能性があります。Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError
このバグは、プロジェクトが同時に使用されていることを意味しますlog4j-over-slf4j.jar 和 slf4j-log4j12.jar
。これら2つのパッケージが競合しているため、一方を削除する必要がありますが、以前のプロジェクトは正常に実行できるため、FastDfSのお客様である必要があります。上記の依存関係の1つへの参照であるため、ここでFastDFSクライアントのpom依存関係を再入力して、彼の依存関係を確認できます。次の図を参照してください。
説明は、FastDFSが再び導入されたためです。したがって、fastDFSのインポートの依存関係の依存関係を削除する必要があります
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.29-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
したがって、私たちのプロジェクトは基本的に実行できます
3.デモをアップロードします
ここで実際のテストを実行できます
画像が実際にアップロードされ、FastDFSによって生成された画像のURLアドレスがバックグラウンドで返され、ブラウザから実際にアクセスできることがわかります。
コードワードは簡単ではありません、あなたがそれがあなたに役立つと思うなら、あなたは私の公式アカウントに従うことができます、初心者UPはあなたのサポートを必要としています!!!