簡単な統合!

FileCatalystには、3rdパーティアプリケーションとワークフローへの統合のための多くのオプションが用意されています。 当社のSDKは、さまざまな開発言語および環境用のあらゆるコンポーネントを備えています。

製品 利用可能なAPI 使用法
FileCatalystサーバー Java、CLI、REST FileCatalystサーバーの管理(例:ユーザーの追加/削除、現在の転送の管理)
FileCatalyst Hotfolder REST アプリケーション全体のフルコントロール(例:新しいサイトの追加、スケジューラの変更、帯域幅の変更)
FileCatalyst TransferAgent JavaScript、REST 任意のWebアプリケーション内でのWeb転送の統合(例:ローカル/リモートファイルの取得、アップロードの実行)
FileCatalyst Mobile Android、iOS、C ++ モバイルアプリケーション内での高速ファイル転送の統合
FileCatalystクライアントAPI Java、C ++、CLI、.NET デスクトップアプリケーションへの統合
FileCatalystワークフロージョブの送信 Java 任意のアプリケーションにジョブの提出/配布を統合します。
FileCatalystのワークフロー管理 REST ユーザー、フィールド、フォームの作成を統合する
FileCatalyst Central REST FileCatalystの展開全体を管理、監視します。 接続されているノードをリモートで制御します。 リモートで転送を実行する
FileCatalyst TransferController REST 任意のアプリケーションにノードからノードへの転送を統合する

*ワークフローおよびWebmailファイルエリア間の転送のみ。

開発キットは当社製品の基盤です。 対象製品を所有している場合、開発キットはアドオンとしてライセンスされている場合があります。 スタンドアロン開発では、通常、SDKはFileCatalyst Directに追加されます。 ただし、一部のコンポーネントはFileCatalystワークフローとやりとりするように設計されています。

Java SDK Webinarをご覧ください

付属のダウンロード サンプルソースコードはこちら

C ++ SDK Webinarを見る

クライアントAPI

われわれの文書化されたAPIは、FileCatalyst Serverへの接続を確立してファイル転送を高速化するために必要なすべてのメソッドにアクセスできるようにします。 コードの短い行で、あなたは進行中です。 デフォルト値はほとんどの関数で使用され、高度な機能にアクセスするためのさまざまなメソッド呼び出しがあります。

また、クライアントAPIを使用すると、FileCatalyst WorkflowまたはWebmailにプログラムやジョブやファイルを送信することができます。

import unlimited.fc.client.api。*;
import java.io. *;

パブリッククラスUploadSample {
public static void main(String args [])例外をスローします{

FCClient fc =新しいFCClient( "192.168.1.30"、21)。
fc.setShowConsoleLog(true);
fc.initialize();
fc.connect();
fc.login( "anonymous"、 "me@email.com");
fc.setMode(TransferMode.UDP);

//開始レートとターゲットレートを同じに設定します。 輻輳が発生した場合は遅くなります。
fc.setStartRate(10000);
fc.setTargetRate(10000);
fc.setVerifyIntegrity(true);
TransferHook upload = fc.upload(新しいファイル( "c:/temp/500MB.zip"));

while(!upload.isTransferComplete()){
//ここでさまざまなメソッドを使用して進捗情報を表示できます
// TransferHookオブジェクト

if(upload.getStatusCode()== upload.TRANSFERRING){
System.out.println(upload.getPercent()+ "%" + upload.getRate()+ "Kbps");
}

試して{
Thread.sleep(1000);
}
catch(InterruptedException ex){
}
}

//サーバーから切断する
fc.disconnect();

// 掃除
fc.finish();
}
}

import unlimited.fc.client.api。*;
import java.io. *;
import java.util。*;
import java.util.Observable;
import java.io.IOException;
import unlimited.fc.com.FCException;

/ **
*この例は、Observablesを使用してTransferHookオブジェクトを監視する方法を示しています。
*/

パブリッククラスUploadSampleAdvancedはObserver {

TransferHookのアップロード= null;

public void go()throws IOException、FCException {

FCClient fc =新しいFCClient( "192.168.1.30"、2057)。
fc.setShowConsoleLog(true);
fc.initialize();
fc.connect();
fc.login( "anonymous"、 "me@email.com");

//転送モードを自動検出しましょう。 RTTが十分に高い場合を除き、FTPが使用されます。
fc.setMode(TransferMode.AUTO);

//一定の1500 Kbpsで輻輳制御を送信しません。
// FCが最良の転送モードとして検出された場合のみ、輻輳制御が開始されます
fc.setUseCongestionControl(false);
fc.setTargetRate(1500);

//後でファイルを確認する
fc.setVerifyIntegrity(true);
upload = fc.upload(新しいファイル( "c:/ bigfiles / 500MB"));
upload.addObserver(this);

試して{
同期(これ){
待つ();
}
}
catch(InterruptedException ex){
}

//サーバーから切断する
fc.disconnect();

// 掃除
fc.finish();
}

public void update(Observable observable、Objectオブジェクト){

if(!upload.isTransferComplete()&&!upload.isTransferCancelled()&&
!upload.isTransferError()){
if(upload.getStatusCode()== upload.TRANSFERRING &&
upload.getCurrentPercent()!= 100){
printProgress(upload.getRate()、upload.getCurrentPercent());
}
else if(upload.getStatusCode()==アップロード.DONEFILE){
printProgress(upload.getRate()、100);
}
}
他{
//すべてのファイルが完成する
同期(これ){
notifyAll();
}
}
}

public void printProgress(int rate、int percent){
System.out.println(パーセント+ "%");
System.out.println(レート+ "kbps");
}

public static void main(String args [])例外をスローします{
新しいUploadSampleAdvanced()。go();
}
}

サーバーAPI

Server Java APIとREST APIは、ユーザーを管理し、FileCatalyst Serverのセッション情報を要求するために必要なすべてのメソッドを公開します。

また、クライアントAPIを使用すると、FileCatalyst WorkflowまたはWebmailにプログラムやジョブやファイルを送信することができます。

//以下の例は、アプリケーションがユーザーを作成しようとするサンプルコードです。
// ServerAPI間の通信が必要な場合、再接続試行のロジックをラップします。
//サーバーが切断されます。

// FileCatalystサーバーへの初期接続を設定するための呼び出し
public void init()throws Exception {
FCServer fcserver =新しいFCServer();
//接続パラメータ
fcserver.setHostname( "localhost");
fcserver.setPort(12400);
fcserver.setUserName( "admin");
fcserver.setPassword( "system");
//接続する
fcserver.connect();
}

//再接続を試みる
private void reconnect()throws Exception {
試して{
fcserver.disconnect();
} catch(例外e){
}
fcserver.connect();
}

//
//ユーザーのログイン資格情報を変更する方法。 ユーザーがまだ存在しない場合は、
//ユーザーも同様です。
// @param fcUserName FTPログイン名
// @param fcPasswordユーザーが保持したいパスワード
// @throws Exception 3の試行後にサーバに接続できない場合、またはサーバがあなたに許可していない場合
//ユーザーを作成/変更します。
//
public void createOrModifyUserCredentials(String fcUserName、String fcPassword)例外をスローする{
// FileCatalystユーザーを取得します。
int MAXATTEMPTS = 3;
UserContainer fcUser = null;
int retryAttempts = 0;
while(fcUser == null && retryAttempts <MAXATTEMPTS){//接続が切断された場合は接続しようとしますif(!fcserver.isConnected()){reconnect(); } {fcUser = fcserver.getUser(fcUserName);を試してください。 if(fcUser == null){// nullが返されると、ユーザーが存在しないことを示します。 - fcserver.addUser(fcUserName、fcPassword);を作成します。 //ユーザが実際にそこにいるかどうかを調べるfcserver.resynchConfigurationFiles(); fcUser = fcserver.getUser(fcUserName); if(fcUser == null){throw new Exception( "FileCatalystユーザーはユーザー名で作成できませんでした" + fcUserName + "'"); } return; } else {fcserver.modUserPassword(fcUserName、fcPassword); 戻る; }} catch(AdminConnectionException e){//接続が切断されました。 再試行しましょうretryAttempts ++; }}新しい例外をスローする(「FCServerに接続できません、最大試行に達しました」); }

モバイルAPI

Apple iOSとGoogle Android用の高速ファイル転送アプリを簡単に作成できます。 FileCatalystは、iOS用のネイティブObjective-C APIとAndroid Dalvik用のJava APIを提供します。

モバイルAPIを使用して構築されたFileCatalystアプリは、 Android
および iOS.

//
// FCAViewController.m
// example
//
// Copyright(c)2012 Unlimi-Tech Software Inc. ..無断複写・転載を禁じます。
//
//このサンプルコードは、ファイルをアップロードしてからダウンロードします
// "nature-qc-320-320-7.jpg"(SDKにバンドルされています)

#import "FCAViewController.h"
#import "NSString + FCAUtils.h"

@interface FCAViewController()

@property(強、非原子)FCAControl *コントロール;

@終わり

@implementation FCAViewController
@synthesize connectionStatusLabel;
@synthesize connectionDetailLabel;
@synthesize transferStatusLabel;
@synthesize transferDetailLabel;
@synthesize cancelButton;
@synthesize downloadButton;
@synthesize uploadButton;
@synthesize connectButton;
@synthesizeコントロール。

- (void)reportError:(NSError *)error {
if(!error)return;

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@ "エラー"
メッセージ:error.localizedDescription
デリゲート:なし
cancelButtonTitle:@ "OK"
otherButtonTitles:nil];
[アラートショー];
}

//基本的なファイルアップロード。 コントロールインスタンスには、すべてのコマンド(cancelTransferを除く)に
//実行されます。 これを行うには、performBlock:completion:とperformBlockAndWaitの2つのヘルパーメソッドがあります。
//ブロック内のコマンドが失敗すると、完了ブロックに渡されたNSErrorインスタンスで報告され、
//またはperformBlockAndWait:から返されます。

- (IBAction)uploadAction:(id)sender {
[self.uploadButton setTitle:@ "アップロード中..." forState:UIControlStateNormal];
self.uploadButton.enabled = NO;

[self.control performBlock:^ {
NSString * filename = @ "nature-qc-320-320-7.jpg";
NSURL * fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@ "nature-qc-320-320-7" ofType:@ "jpg"]];

[control uploadFile:fileURL toPath:ファイル転送の開始:^(FCAFileTransferStats * stats){
//このコールバックはメインキューで呼び出されます
self.transferStatusLabel.text = filename;
self.cancelButton.hidden = NO;
NSLog(@ "転送が開始しました");
} transferCompleted:^(FCAFileTransferStats * stats){
//このコールバックはメインキューで呼び出されます
NSLog(@ "転送が完了しました");
self.transferStatusLabel.text = [NSString stringWithFormat:@ "%@ finished"、filename];
self.cancelButton.hidden = YES;
}];

}完了:^(NSError *エラー){
[self reportError:エラー];
[self.uploadButton setTitle:@ "テストアップロード" forState:UIControlStateNormal];
self.uploadButton.enabled = YES;
}];
}

- (IBAction)downloadAction:(UIButton *)sender {
[self.downloadButton setTitle:@ "ダウンロード中..." forState:UIControlStateNormal];
self.downloadButton.enabled = NO;

[self.control performBlock:^ {
NSString * filename = @ "nature-qc-320-320-7.jpg";
NSURL * documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] lastObject];
NSURL * fileURL = [documentsDirectory URLByAppendingPathComponent:filename];

[control downloadFile:filename
toURL:fileURL
transferStarted:^(FCAFileTransferStats * stats){
self.transferStatusLabel.text = filename;
self.cancelButton.hidden = NO;

} transferCompleted:^(FCAFileTransferStats * stats){
self.transferStatusLabel.text = [NSString stringWithFormat:@ "%@ finished"、filename];
self.cancelButton.hidden = YES;
}];
}完了:^(NSError *エラー){
[self reportError:エラー];
[self.downloadButton setTitle:@ "テストダウンロード" forState:UIControlStateNormal];
self.downloadButton.enabled = YES;
}];
}

//このメソッドは、非ブロッキングの接続/切断呼び出しを使用する方法を示します
- (IBAction)connectAction:(UIButton *)sender {
if([self.control isConnected]){
sender.enabled = NO;
[送信者setTitle:@ "Disconnecting ..." forState:UIControlStateNormal];

[self.control performBlock:^ {
[self.control disconnect];
}完了:^(NSError *エラー){
sender.enabled = YES;
[self reportError:エラー];
}];
場合} else {
sender.enabled = NO;
[送信者setTitle:@ "接続中..." forState:UIControlStateNormal];

[self.control performBlock:^ {
[self.control connect];
}完了:^(NSError *エラー){
sender.enabled = YES;
[self reportError:エラー];
}];
}
}

- (IBAction)cancelAction:(UIButton *)sender {
[self.control cancelTransfer];
}

- (id)initWithNibName:(NSString *)nibNameOrNilバンドル:(NSBundle *)nibBundleOrNil {
自己= [スーパーinitWithNibName:nibNameOrNilバンドル:nibBundleOrNil];
if(self){
// FCAControlインスタンスを作成し、接続オプションを設定する
self.control = [[FCAControl alloc] init];
self.control.username = @ "user";
self.control.password = @ "test";
self.control.hostname = @ "10.0.1.2";
self.control.port = 8123;

//設定する必要のないオプション
control.useSSL = NO;
control.autoResumeEnabled = NO;
control.fileExistsOverride = YES;
}
自己を返す。
}

- (void)configureControlStats {
self.connectionDetailLabel.text = [NSString stringOfTransferRate:self.control.bitsPerSecondAverageTransferRate];
}

- (void)configureView {
NSString * connectionStatus = nil;

if([self.control isConnected]){
[self.connectButton setTitle:@ "Disconnect" forState:UIControlStateNormal];
self.uploadButton.hidden = NO;
self.downloadButton.hidden = NO;
connectionStatus = @ "connected";
場合} else {
[self.connectButton setTitle:@ "接続" forState:UIControlStateNormal];
self.uploadButton.hidden = YES;
self.downloadButton.hidden = YES;
connectionStatus = @ "接続されていません";
}

self.connectionStatusLabel.text = [NSString stringWithFormat:@ "%@:%d(%@)"、
self.control.hostname、self.control.port、connectionStatus];
}

- (void)viewDidLoad
{
[super viewDidLoad];

//接続イベントと切断イベントの通知があります
[[NSNotificationCenter defaultCenter] addObserverForName:FCAControlConnectedKey
オブジェクト:self.control
キュー:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * note){
[self configureView];
}];

[[NSNotificationCenter defaultCenter] addObserverForName:FCAControlDisconnectedKey
オブジェクト:self.control
キュー:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * note){
[self configureView];
}];

//転送中に、Controlインスタンスは定期的に更新された通知を送信します
//接続統計
[[NSNotificationCenter defaultCenter] addObserverForName:FCAControlUpdatedKey
オブジェクト:self.control
キュー:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * note){
[self configureControlStats];
}];

[self configureView];
}

- (void)viewDidUnload
{
[self setConnectionStatusLabel:nil];
[self setConnectionDetailLabel:nil];
[self setTransferStatusLabel:nil];
[self setTransferDetailLabel:nil];
[self setCancelButton:nil];
[self setDownloadButton:nil];
[self setUploadButton:nil];
[self setConnectButton:nil];
[super viewDidUnload];
//メインビューの保持されたサブビューを解放します。
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
return(interfaceOrientation!= UIInterfaceOrientationPortraitUpsideDown);
場合} else {
YESを返します。
}
}

@終わり

Dalvikコードについては、 クライアントAPI サンプル。

HotFolder REST API

HotFolder REST APIは、新しい監視フォルダの追加、新しいサイトの追加、タスクの作成/操作/実行のためのメソッドを公開します。

TransferAgent JavaScriptおよびREST API

TransferAgent JavaScriptおよびREST APIを使用すると、どのWebアプリケーションとも緊密に統合できます。 これにより、Webアプリケーションはローカルファイルシステムにアクセス/ブラウズし、ファイルをキューに追加し、進行中のファイル転送を開始および監視することができます。 これらはすべてJavaScript経由で、またはREST呼び出しを通じて直接実行できます。

中央REST API

FileCatalyst Central APIは、接続されているすべてのノードのすべてのレポートデータへのアクセスを提供し、リバースHTTPプロキシとして機能し、Server、HotFolder、TransferAgent(v3.7)などの個々の接続ノードのREST APIにアクセスします。

ワークフローREST API

FileCatalyst Workflow用のRESTful APIは、Webを介して多数の管理機能を公開しています。 これらには、

  • ユーザーの追加/編集/削除
  • グループの追加/編集/削除
  • オーダーフォームの追加/編集/削除
  • FTPサイトの追加/編集/削除
  • ジョブフィールドを一覧表示する

.NETラッパー

.NETラッパーは、.NETのFileCatalystコマンドラインへの透過的でスレッドセーフなアクセスを提供します。 1つの潜在的なアプリケーションは、
Microsoftの開発フレームワーク内で開発するFileCatalystテクノロジ .NETラッパーには、公式のJavaランタイムとFileCatalyst CLIが必要です。

クリックしてサンプルのスクリーンショットを表示する

コマンドラインインターフェイス

CLIを使用して、実質的に任意のスクリプト言語または他の多くのプログラミング言語からFileCatalyst機能にアクセスします。 コマンドラインに出力できるツールを使用すると、FileCatalystファイル転送をトリガすることができます。

C ++ネイティブクライアントライブラリ

FileCatalyst製品は、主要なプログラミング言語としてJavaを使用して構築されています。 これはいつもあります
集中化されたコードベースを維持し、複数のプラットフォームやブラウザ間で互換性を持たせることができました
(Java Applet Pluginを介して)。 今日市場にあるシステム(デスクトップ/ラップトップ/サーバー)の95%
Windows、MacOSX、Linux、Solaris、AIXは、既存のソフトウェアを利用できます。

しかし、Javaが利用できない特定のシステムがあります。 多くのセットトップボックスや組み込みシステムでは
(ネットワークアプライアンス、ゲーム機)、Javaはインストールされていないか、または使用可能ではありません。 この生態系は取れませんでした
私たちのソリューションの利点。

これに照らして、私たちはC ++クライアントソリューションを開発しました。 ネイティブC ++ APIとしてもネイティブとしても利用可能
コマンドライン実行可能ファイル(Windowsの場合は.exe、Linuxの場合は32または64-bitバイナリ)、FileCatalystのC ++クライアントは
Javaがインストールされていないシステムでのファイル転送の高速化を可能にします。

C ++ Webinarをご覧ください

#include

void example(const std :: string&serverIpOrHostname、
const std :: string&username、
const std :: string&password)
{
// fc :: Controlが必要とするいくつかのオプションを設定して、振る舞いを知るようにします。
fc ::オプションオプション。
options.setFtpServer(serverIpOrHostname、21);
options.setUsernameAndPassword(ユーザー名、パスワード);
options.setMd5Verification(true);
options.setMode(fc :: kUdp);
// FTP fc :: Controlオブジェクトを作成します。 それが作成されると、
// fc :: Optionsオブジェクトはもはや必要なくなり、範囲外になることがあります。
fc :: Control ftp(オプション);
//最初に提供されたオプションでサーバーに接続する
// fc :: Options。 connect()が明示的に呼び出されない場合、
//メソッドが呼び出されるまで接続が延期されます。
//サーバーと直接通信します。
ftp.connect();
//接続が確立された後も多くの
//すべてではない)FTP設定は変更できます。
fc :: Options newOptions = ftp.getOptions();
newOptions.setBandwidth(fc :: k100_Mbps);
ftp.setNewOptions(newOptions);
//サーバーからいくつかのファイルをダウンロードします。
ftp.prepareRecursiveDir(fc :: Remote( "/ project")、fc :: Local( "/ tmp"));
ftp.download();
...
}

現在、ライブラリを次のプラットフォームに移植しています。

    • 32ビットのWindows
    • 64ビットのWindows
  • Linux 64-bit(.deb)
  • Linux 64ビット(.rpm)
  • Linux ARM 7 32ビット(.deb)
  • Linux ARM 7 32ビット(.rpm)
  • OSX 64ビット

特定のプラットフォームへのポートが必要な場合は、詳細をお問い合わせください。