メディアを春のブートの中でメディアをアップロードする


メディア機能を備えたソフトウェアを構築する開発者はメディアをどこかに保管しなければならず、ほとんどの場合、transform 最適な経験のために最適化.すべてのタスクは、Cloudinaryのエンドツーエンドのイメージで実行することができます-とビデオ管理ソリューション.
しかし、しばらく前に春のブートREST APIを構築している間、私はCloutharyとの統合が闘争であることを発見しました.また、曇りのドキュメントはかなり良いですが、春のブートのためのワークフローを記述していない、私は自分でそれを把握する必要があります.
このチュートリアルでは、春のブートアプリケーションからCloudaryにプログラムをアップロードするプロセスを通して、あなたの時間と努力を私のコードを動作させるために入れなければならない保存します.サンプル参照のために、私のものを見てくださいSpring Boot API on GitHub .

前提条件の取得
次の専門知識が必要です.
  • RESTful API設計の基本的理解
  • スプリングブートとJava 8の知識
  • また、Java IDEを手にします.

    Cloudaryアカウントの設定
    まず、まだ持っていないのであれば.sign up ストレージ、変換、および帯域幅のクレジットを提供する無料のCloudaryアカウント.また、より多くのクレジットやその他の機能の有料サブスクリプションにアップグレードします.

    符号なしアップロードの有効化
    次に、あなたのCloudaryアカウントのデフォルトで符号なしアップロードを有効にしますupload preset , その後、アカウントのメディアライブラリにアップロード要求を削除せずにメディアをアップロードすることができます.
    アップロードプリセットを設定するには、次の手順を実行するには、中央設定のアップロードオプションを設定し、それぞれのアップロードの設定を指定する必要がなくなり、プリセットを有効にします.
  • あなたのCloudaryアカウントのダッシュボードで、[設定]をクリックし、[アップロード]タブの上部にある[設定]をクリックします.アップロードプリセットセクションにスクロールダウンします.
  • 私の未署名プリセットの横にあるをクリックし、次の画面で、署名モードを符号なしに設定します.


  • クラウドブートアプリケーションへのクラウドの統合
    春のブートアプリケーションにCloudaryを統合する最も簡単な方法は、CloudinaryのMavenの依存関係です.次の手順に従います.

  • あなたのアプリケーションのpom.xml ファイルに依存関係のリストに雲の依存関係を追加します.
    <dependency>
        <groupId>com.cloudinary</groupId>
        <artifactId>cloudinary-http44</artifactId>
        <version>1.17.0</version>
    </dependency>
    
  • クリエイトアbean メソッド@bean あなたのCloudary構成を返すメソッドレベル注釈.この方法では、ステップ1で構成された依存性をアプリケーション全体で適用できます.
  • インザメインApplication.java アプリケーションのクラスを次に示します.変数の置換cloud_name , api_key , and api_secret それらの値で、あなたのCloudaryアカウントのダッシュボードに表示されます.
        @Bean
        public Cloudinary cloudinaryConfig() {
            Cloudinary cloudinary = null;
            Map config = new HashMap();
            config.put("cloud_name", cloudName);
            config.put("api_key", apiKey);
            config.put("api_secret", apiSecret);
            cloudinary = new Cloudinary(config);
            return cloudinary;
        }
    
    今すぐあなたの春のブートアプリケーションのどこにCloudaryを使用することができます.

    画像のアップロード
    上で参照したSpring Bootアプリケーションの下にあるコードスニペットは、トップダウンアプローチでCloudaryに画像をアップロードできます.コメントアウトされた行を無視する彼らはこのチュートリアルに関連していません.

    RESTController
    private final CloudinaryGifService cloudinaryGifService;
    private final UserService userService;
    
    @PostMapping("/gifs")
    public ResponseEntity<LinkedHashMap<String, Object>> uploadGif(@RequestParam("gifFile") 
    MultipartFile gifFile, Authentication authentication, @RequestParam("title") String title) throws IOException {
        // User currentUser = 
    // userService.findUserByEmail(authentication.getName()); // Authorization
        String url = cloudinaryGifService.uploadFile(gifFile);
        cloudinaryGifService.saveGifToDB(url, title , currentUser);
    
    
        // LinkedHashMap<String, Object> jsonResponse = cloudinaryGifService.modifyJsonResponse("create", URL);
        return new ResponseEntity<>(jsonResponse,HttpStatus.CREATED);
    }
    
    上のコードで
  • The cloudinaryGifService 変数は、CloudinaryService アップロードするロジックを保持するクラスMultipartFile Cloudinaryにアップロードする前に、通常のファイルにファイルします.
  • The uploadGif メソッドはgif タイトルとgif イメージとしてMultipartFile ファイル.
  • The Service クラスは、あなたの曇りのアカウントにイメージをアップロードして、イメージを保存しますgif ) URLとタイトルのアプリケーションのデータベースに.
  • 注意gif チームワークAPIがフォーマットタイプGIFのイメージだけを扱うので、コードで指定されます.gif ). 実際には、このプロセスは他の形式のイメージファイル、例えば.png , .jpeg , など
    {注}

    サービス
    思い出してくださいCloudinaryService クラスは、変換して、曇りにイメージをアップロードするために、ロジックを含みます.以下に問題のコードを示します.
    private final Cloudinary cloudinaryConfig;
    
    public String uploadFile(MultipartFile gif) {
        try {
            File uploadedFile = convertMultiPartToFile(gif);
            Map uploadResult = cloudinaryConfig.uploader().upload(uploadedFile, ObjectUtils.emptyMap());
            boolean isDeleted = uploadedFile.delete();
    
            if (isDeleted){
               System.out.println("File successfully deleted");
            }else
                System.out.println("File doesn't exist");
            return  uploadResult.get("url").toString();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    
    private File convertMultiPartToFile(MultipartFile file) throws IOException {
        File convFile = new File(file.getOriginalFilename());
        FileOutputStream fos = new FileOutputStream(convFile);
        fos.write(file.getBytes());
        fos.close();
        return convFile;
    }
    
    上のコードで
  • cloudinaryConfig からクラウドの設定をインスタンス化します@bean 以前に作成したメソッド.
  • uploadFile 変換MultipartFile を指定した場合、convertMultiPartToFile メソッドinterface MultipartFile アップロードされたファイルをmultipart request . その後uploadFile ファイルをCloudinaryにアップロードし、GIFイメージのURLを返しますRestController uploadFile メソッド.
  • ブールisDeleted アップロード後にファイルが削除されたかどうかを確認します.
  • PostmanでアップロードをテストするにはStack Overflow page .
    サイズを10 MBまでアップロードするには、アプリケーションのスプリングサーブレットのmultipartファイルサイズをapplication.properties ファイル
    spring.servlet.multipart.max-file-size=10MB
    spring.servlet.multipart.max-request-size=10MB
    

    動画アップロード
    Cloudaryでプログラムをビデオでアップロードするには、画像をアップロードするための同じプロセスに従ってください.注意してください.upload 方法は100 MBまでファイルをアップロードします.より大きいサイズのビデオのためにupload_large 大きなファイルをChunksでClouksにアップロードする方法
    cloudinary.uploader().uploadLarge("my_large_video.mp4", ObjectUtils.asMap("resource_type", "video"));
    
    必ず更新してくださいCloudinaryService クラスとuploadFile 次のようにします.
    public String uploadFile(MultipartFile gif) {
        try {
            File uploadedFile = convertMultiPartToFile(gif);
            Map uploadResult = cloudinaryConfig.uploader().uploadLarge(uploadedFile, ObjectUtils.emptyMap());
    
            boolean isDeleted = uploadedFile.delete();` \
    
            if (isDeleted){
               System.out.println("File successfully deleted");
            }else
                System.out.println("File doesn't exist");
            return  uploadResult.get("url").toString();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    
    また、限界を上げるspring.servlet.multipart.max-request-size あなたのapplication.properties ファイル.

    参考文献
    さらに参考にするには、次のようにします.
  • Cloudinary’s documentation on image and video uploads
  • Teamwork API on GitHub