Snadná integrace!

FileCatalyst nabízí mnoho možností pro integraci do aplikací a pracovních postupů 3rd. Naše SDK se může pochlubit celou řadou komponent pro různé vývojové jazyky a prostředí.

Produkt Dostupné rozhraní API Používání
FileCatalyst Server Java, CLI, REST Správa serveru FileCatalyst (Příklad: Přidat nebo odebrat uživatele, spravovat aktuální přenosy
FileCatalyst Hotfolder REST Plná kontrola celé aplikace (Příklad: Přidat nové stránky, Upravit plánovač, Změnit šířku pásma)
FileCatalyst TransferAgent JavaScript, REST Integrace webových přenosů v jakékoli webové aplikaci (Příklad: Získejte lokální / vzdálené soubory, spusťte nahrávání)
FileCatalyst Mobile Android, iOS, C ++ Integrovaný zrychlený přenos souborů v libovolné mobilní aplikaci
FileCatalyst Client API Java, C ++, CLI, .NET Integrace do desktopových aplikací
Odeslání úlohy FileCatalyst Workflow Jáva Integrujte podání nebo distribuci úlohy do libovolné aplikace.
Správa workflow FileCatalyst REST Integrace vytváření uživatelů, polí a formulářů
FileCatalyst Central REST Správa, sledování celého nasazení programu FileCatalyst. Vzdáleně řídit jakýkoli připojený uzel. Provádějte přenosy na dálku
FileCatalyst TransferController REST Integrace uzlu do přenosu uzlů do libovolné aplikace

* Přenos do a z pracovních oblastí Workflow a Webmail File Areas.

Development Kit je základem našich produktů; pokud vlastníte nějaké způsobilé produkty, může Development Kit být licencován jako doplněk. Pro samostatný vývoj je soubor SDK obvykle přidán do souboru FileCatalyst Direct; některé součásti jsou však navrženy tak, aby spolupracovaly s pracovním tokem FileCatalyst.

Sledujte webový seminář Java SDK

Stáhnout doprovod zdrojový kód zde

Sledujte náš webový seminář C ++ SDK

Client API

Naše dobře zdokumentované rozhraní API umožňuje přístup ke všem způsobům, které jsou nutné k vytvoření připojení k serveru FileCatalyst pro zrychlené přenosy souborů. S několika krátkými řádky kódu můžete být v pohybu. Výchozí hodnoty se používají pro většinu funkcí s celou řadou metodických volání, které vám umožňují přístup k pokročilým funkcím.

Klientská rozhraní API také umožňuje programově odesílat úlohy a soubory do aplikace FileCatalyst Workflow nebo Webmail.

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

public class UploadSample {
public static void hlavní (String args []) hodí výjimku {

FCClient fc = nový FCClient ("192.168.1.30", 21);
fc.setShowConsoleLog (true);
fc.initialize ();
fc.connect ();
fc.login ("anonymní", "me@email.com");
fc.setMode (TransferMode.UDP);

// Nastavte počáteční rychlost a cílovou rychlost stejně. Zpomalí se, pokud dojde k přetížení.
fc.setStartRate (10000);
fc.setTargetRate (10000);
fc.setVerifyIntegrity (true);
TransferHook upload = fc.upload (nový soubor ("c: /temp/500MB.zip"));

zatímco (! upload.isTransferComplete ()) {
// zde můžete zobrazit některé informace o pokroku pomocí různých metod
// objekt TransferHook

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

Snaž se {
Závit.slep (1000);
}
catch (InterruptedException ex) {
}
}

// odpojte od serveru
fc.disconnect ();

// vyčistit
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;

/ **
* Tento příklad ilustruje použití monitorovacích objektů pro sledování objektu TransferHook.
*/

veřejná třída UploadSampleRozšířená implementace Pozorovatel {

TransferHook upload = null;

public void go () hodí IOException, FCException {

FCClient fc = nový FCClient ("192.168.1.30", 2057);
fc.setShowConsoleLog (true);
fc.initialize ();
fc.connect ();
fc.login ("anonymní", "me@email.com");

// Automaticky zjistíme režim přenosu. Pokud RTT není dostatečně vysoká, použije se FTP.
fc.setMode (TransferMode.AUTO);

// umožňuje posílat konstantní 1500 Kbps, bez kontroly přetížení.
// kontrola přetížení přichází do hry pouze tehdy, když je FC detekován jako nejlepší přenosový režim
fc.setUseCongestionControl (false);
fc.setTargetRate (1500);

// ověřte soubor poté
fc.setVerifyIntegrity (true);
upload = fc.upload (nový soubor ("c: / bigfiles / 500MB"));
upload.addObserver (toto);

Snaž se {
synchronizováno (toto) {
Počkejte();
}
}
catch (InterruptedException ex) {
}

// odpojte od serveru
fc.disconnect ();

// vyčistit
fc.finish ();
}

veřejná neplatná aktualizace (Observable observable, Object object) {

pokud (! upload.isTransferComplete () &&! upload.isTransferCancelled () &&
! upload.isTransferError ()) {
if (upload.getStatusCode () == upload.TRANSFERRING &&
upload.getCurrentPercent ()! = 100) {
printProgress (upload.getRate (), upload.getCurrentPercent ());
}
else if (upload.getStatusCode () == upload.DONEFILE) {
printProgress (upload.getRate (), 100);
}
}
else {
// všechny soubory byly dokončeny
synchronizováno (toto) {
notifyAll ();
}
}
}

public void printProgress (int rychlost, int procent) {
System.out.println (procento + "%");
System.out.println (rychlost + "kbps");
}

public static void hlavní (String args []) hodí výjimku {
nová funkce UploadSampleAdvanced (). go ();
}
}

Server API

Rozhraní API serverů Java a REST vystavují všechny metody potřebné pro správu uživatelů a vyžádání informací o relacích na serveru FileCatalyst.

Klientská rozhraní API také umožňuje programově odesílat úlohy a soubory do aplikace FileCatalyst Workflow nebo Webmail.

// Příklad níže je ukázkový kód, ve kterém se aplikace pokouší vytvořit uživatele a
// překonává logiku pro pokusy o opětovné připojení, pokud by komunikace mezi serverem ServerAPI
// a server je oddělen.

// Volání pro nastavení počátečního připojení k serveru FileCatalyst
public void init () vyhazuje výjimku {
FCServer fcserver = nový FCServer ();
// parametry připojení
fcserver.setHostname ("localhost");
fcserver.setPort (12400);
fcserver.setUserName ("admin");
fcserver.setPassword ("systém");
// connect
fcserver.connect ();
}

// se pokouší znovu připojit
private void znovu připojit () hodí výjimku {
Snaž se {
fcserver.disconnect ();
} catch (Výjimka e) {
}
fcserver.connect ();
}

//
// Způsob úpravy přihlašovacích pověření pro uživatele. Pokud uživatel ještě neexistuje, vytvořte
// uživatel také.
// @ param fcUserName Přihlašovací jméno FTP
// @param fcPassword Heslo, které chce uživatel mít
// @throws Výjimka Pokud se nemůžete připojit k serveru po pokusu 3, nebo server vám nedovoluje
// vytvořit / upravit uživatele.
//
public void createOrModifyUserCredentials (Řetězec fcUserName, String fcPassword) hodí výjimku {
// Získat uživatele FileCatalyst.
int MAXATTEMPTS = 3;
UserContainer fcUser = null;
int retryAttempts = 0;
zatímco (fcUser == null && retryAttempts <MAXATTEMPTS) {// pokuste se připojit, pokud jsme ztratili spojení, pokud (! Fcserver.isConnected ()) {reconconnect (); } zkuste {fcUser = fcserver.getUser (fcUserName); pokud (fcUser == null) {// null návrat znamená, že uživatel neexistuje - vytvořit fcserver.addUser (fcUserName, fcPassword); // test, zda uživatel skutečně existuje fcserver.resynchConfigurationFiles (); fcUser = fcserver.getUser (fcUserName); pokud (fcUser == null) {throw new Exception ("Uživatel FileCatalyst nemohl být vytvořen s uživatelským jménem" "+ fcUserName +" '"); } vrátit se; } jiný {fcserver.modUserPassword (fcUserName, fcPassword); vrátit se; }} chytit (AdminConnectionException e) {// conection foobared. Zkuste to znovu retryAttempts ++; }} hodit novou výjimku ("Nelze se připojit k FCServeru, dosáhla max pokusů"); }}

Mobile API

Snadno vytvářet aplikace pro rychlé přenosy souborů pro Apple iOS a Google Android. FileCatalyst poskytuje nativní objektiv C pro rozhraní iOS a Java API pro Android Dalvik.

Vestavěné pomocí rozhraní API pro mobilní zařízení je nyní k dispozici aplikace FileCatalyst robot
a iOS.

//
// FCAViewController.m
// příklad
//
// Autorská práva (c) 2012 Unlimi-Tech Software Inc. .. Všechna práva vyhrazena.
//
// Tento ukázkový kód nahraje a poté stáhne soubor s názvem
// "příroda-qc-320-320-7.jpg" (přiložené k SDK)

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

@interface FCAViewController ()

@property (silné, neatomické) FCAControl * kontrola;

@konec

@implementation FCAViewController
@synthesize connectionStatusLabel;
@synthesize connectionDetailLabel;
@synthesize transferStatusLabel;
@synthesize transferDetailLabel;
@synthesize cancelButton;
@synthesize downloadButton;
@synthesize uploadButton;
@synthesize connectButton;
@synthesize control;

- (neplatný) reportError: (NSError *) chyba {
pokud se vrátí chyba (!);

UIAlertView * alert = [[UIAlertView alokace] initWithTitle: @ "Chyba"
zpráva: error.localizedDescription
delegát: nula
cancelButtonTitle: @ "OK"
otherButtonTitles: nil];
[výstražná zpráva];
}

// Nahrávání základního souboru. Kontrolní instance má vlastní soukromou pracovní frontu, kterou musí všechny příkazy (s výjimkou funkce CancelTransfer)
// být spuštěn. Chcete-li to provést, existují dvě pomocné metody, performBlock: completion: a performBlockAndWait:
// Pokud nějaký příkaz uvnitř bloku selže, bude hlášen v instanci NSError předané do bloku dokončení,
// nebo vrácena z volání performBlockAndWait:.

- (IBAction) uploadAction: (id) odesílatel {
[self.uploadButton setTitle: @ "Nahrávání ..." proState: UIControlStateNormal];
self.uploadButton.enabled = NE;

[self.control performBlock: ^ {
NSString * název_souboru = @ "příroda-qc-320-320-7.jpg";
NSURL * fileURL = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: @ "nature-qc-320-320-7" Typ: @ "jpg"]];

[kontrola uploadFile: fileURL toPath: filename transferStarted: ^ (FCAFileTransferStats * stats) {
// toto volání je vyvoláno v hlavní frontě
self.transferStatusLabel.text = název souboru;
self.cancelButton.hidden = NE;
NSLog (@ začal přenos);
} transferCompleted: ^ (FCAFileTransferStats * stats) {
// toto volání je vyvoláno v hlavní frontě
NSLog (@ "převod byl dokončen");
self.transferStatusLabel.text = [NSString řetězecWithFormat: @ "% @ finished", název_souboru);
self.cancelButton.hidden = ANO;
}];

} dokončení: ^ (chyba NSError *) {
[vlastní hlášeníError: chyba];
[self.uploadButton setTitle: @ "Test Upload" proState: UIControlStateNormal];
self.uploadButton.enabled = ANO;
}];
}

- (IBAction) downloadAction: (UIButton *) odesílatel {
[self.downloadButton setTitle: @ "Stahování ..." proState: UIControlStateNormal];
self.downloadButton.enabled = NE;

[self.control performBlock: ^ {
NSString * název_souboru = @ "příroda-qc-320-320-7.jpg";
NSURL * documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory: NSDocumentDirectory
inDomains: NSUserDomainMask] lastObject];
NSURL * fileURL = [documentsDirectory URLByAppendingPathComponent: název_souboru];

[ovládat soubor downloadFile: název souboru
toURL: fileURL
transferStarted: ^ (FCAFileTransferStats * stats) {
self.transferStatusLabel.text = název souboru;
self.cancelButton.hidden = NE;

} transferCompleted: ^ (FCAFileTransferStats * stats) {
self.transferStatusLabel.text = [NSString řetězecWithFormat: @ "% @ finished", název_souboru);
self.cancelButton.hidden = ANO;
}];
} dokončení: ^ (chyba NSError *) {
[vlastní hlášeníError: chyba];
[self.downloadButton setTitle: @ "Stáhnout test" forState: UIControlStateNormal];
self.downloadButton.enabled = ANO;
}];
}

// Tato metoda ukazuje, jak používat volby nonblocking connect / disconnect
- (IBAction) connectAction: (UIButton *) odesílatel {
pokud ([self.control isConnected]) {
sender.enabled = NE;
[odesílatel setTitle: @ "Odpojení ..." proState: UIControlStateNormal];

[self.control performBlock: ^ {
[self.control disconnect];
} dokončení: ^ (chyba NSError *) {
sender.enabled = ANO;
[vlastní hlášeníError: chyba];
}];
} Else {
sender.enabled = NE;
[odesílatel setTitle: @ "Připojování ..." proState: UIControlStateNormal];

[self.control performBlock: ^ {
[self.control connect];
} dokončení: ^ (chyba NSError *) {
sender.enabled = ANO;
[vlastní hlášeníError: chyba];
}];
}
}

- (IBAction) zrušení: (UIButton *) odesílatel {
[self.control cancelTransfer];
}

- (id) initWithNibName: (NSString *) nibNameOrNil balíček: (NSBundle *) nibBundleOrNil {
self = [super initWithNibName: nibNameOrNil balíček: nibBundleOrNil];
pokud (self) {
// vytvořte instanci FCAControl a nastavte možnosti připojení
self.control = [[FCAControl alokovat] init];
self.control.username = @ "uživatel";
self.control.password = @ "test";
self.control.hostname = @ "10.0.1.2";
self.control.port = 8123;

// některé možnosti, které není nutné nastavit
control.useSSL = NO;
control.autoResumeEnabled = NE;
control.fileExistsOverride = ANO;
}
návrat sebe;
}

- (neplatný) configureControlStats {
self.connectionDetailLabel.text = [řetězec NSStringOfTransferRate: self.control.bitsPerSecondAverageTransferRate];
}

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

pokud ([self.control isConnected]) {
[self.connectButton setTitle: @ "Odpojit" proState: UIControlStateNormal];
self.uploadButton.hidden = NE;
self.downloadButton.hidden = NE;
connectionStatus = @ "připojeno";
} Else {
[self.connectButton setTitle: @ "Connect" proState: UIControlStateNormal];
self.uploadButton.hidden = ANO;
self.downloadButton.hidden = ANO;
connectionStatus = @ "není připojen";
}

self.connectionStatusLabel.text = [NSString řetězecWithFormat: @ "% @:% d (% @)",
doména self.control.host, self.control.port, connectionStatus];
}

- (neplatný) viewDidLoad
{
[super viewDidLoad];

// existují oznámení o událostech připojení a odpojení
[[NSNotificationCenter defaultCenter] addObserverForName: FCAControlConnectedKey
objekt: self.control
fronta: [NSOperationQueue mainQueue] pomocí bloku: ^ (NSNotification * note) {
[self configureView];
}];

[[NSNotificationCenter defaultCenter] addObserverForName: FCAControlDisconnectedKey
objekt: self.control
fronta: [NSOperationQueue mainQueue] pomocí bloku: ^ (NSNotification * note) {
[self configureView];
}];

// během přenosů bude instance Kontrola pravidelně odesílat oznámení s aktualizovanou
// statistika připojení
[[NSNotificationCenter defaultCenter] addObserverForName: FCAControlUpdatedKey
objekt: self.control
fronta: [NSOperationQueue mainQueue] pomocí bloku: ^ (NSNotification * note) {
[self configureControlStats];
}];

[self configureView];
}

- (neplatný) viewDidUnload
{
[self setConnectionStatusLabel: nula];
[self setConnectionDetailLabel: nula];
[self setTransferStatusLabel: nula];
[self setTransferDetailLabel: nula];
[self setCancelButton: null];
[self setDownloadButton: null];
[self setUploadButton: nula];
[self setConnectButton: nula];
[super viewDidUnload];
// Uvolněte jakékoliv zachované subviewy v hlavním zobrazení.
}

- (BOOL) by měl být autoritativníInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation
{
pokud ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
návrat (interfaceOrientation! = UIInterfaceOrientationPortraitUpsideDown);
} Else {
návrat ANO;
}
}

@konec

Dalvikův kód naleznete v části Client API ochutnat.

HotFolder REST API

Rozhraní API HotFolder REST obsahuje metody přidávání nových složek sledování, přidávání nových webů a vytváření / manipulace / provádění úloh.

TransferAgent JavaScript a REST API

Rozhraní API TransferAgent JavaScript a REST umožňují těsnou integraci s libovolnou webovou aplikací. Umožňuje webovým aplikacím přístup / prohlížení lokálních souborových systémů, přidávání souborů do fronty, iniciování a sledování probíhajících přenosů souborů. To vše lze provést pomocí JavaScriptu nebo přímo pomocí volání REST.

Centrální REST API

Aplikace FileCatalyst Central API poskytuje přístup ke všem datům pro všechny připojené uzly a slouží také jako reverzní HTTP proxy pro přístup k API REST jednotlivých připojených uzlů, jako jsou Server, HotFolder a TransferAgent (přicházející v v3.7).

Workflow REST API

Funkce RESTful API pro FileCatalyst Workflow odhaluje řadu funkcí správy prostřednictvím webu. Tyto zahrnují:

  • Přidat / upravit / Smazat uživatele
  • Přidat / Upravit / Odstranit skupiny
  • Přidat / upravit / Smazat objednávkové formuláře
  • Přidat / Upravit / Smazat stránky FTP
  • Seznam pracovních polí

.NET Wrapper

Obal .NET nabízí průhledný a bezpečný přístup k příkazovému řádku FileCatalyst v .NET. Jednou z možných aplikací je použití
Technologie FileCatalyst pro vývoj v rámci vývojového prostředí společnosti Microsoft. Obal .NET vyžaduje oficiální runtime Java a FileCatalyst CLI.

kliknutím zobrazíte ukázkový snímek obrazovky

Rozhraní příkazového řádku

Pomocí funkce CLI můžete přistupovat k funkci FileCatalyst skrze prakticky libovolný skriptovací jazyk nebo z mnoha dalších programovacích jazyků. Jakýkoli nástroj schopný výstupu do příkazového řádku lze použít k spuštění souborů FileCatalyst.

Knihovna nativní knihovny C ++

Produkty FileCatalyst jsou postaveny pomocí Java jako hlavního programovacího jazyka. To vždycky
umožnilo udržet centralizovanou kódovou základnu a bylo kompatibilní mezi různými platformami a prohlížeči
(prostřednictvím pluginu Java Applet). 95% systémů (desktopů / laptopů / serverů), které se dnes nacházejí na trhu, včetně
Windows, MacOSX, Linux, Solaris a AIX mohou využít náš stávající software.

Existují ovšem určité systémy, ve kterých není Java k dispozici. V mnoha set top boxech a vestavěných systémech
(síťové zařízení, herní konzole), Java není nainstalována nebo dostupná. Tento ekosystém nebyl schopen přijmout
výhodou našich řešení.

Na základě toho jsme vyvinuli klientské řešení C ++. K dispozici jako nativní C ++ API nebo jako nativní
spustitelný příkaz příkazového řádku (.exe pro Windows, 32 nebo 64-bit binární pro Linux), náš klient FileCatalyst C ++
povolit zrychlení přenosu souborů na systémech, které nemají nainstalovanou Javu.

Podívejte se na náš webový seminář C ++

#include

prázdný příklad (const std :: string & serverIpOrHostname,
const std :: string & username,
const std :: řetězec a heslo)
{
// Nastavte několik možností, které potřebuje fc :: Control, takže ví, jak se chovat.
fc :: Možnosti voleb;
options.setFtpServer (serverIpOrHostname, 21);
options.setUsernameAndPassword (uživatelské jméno, heslo);
options.setMd5Verifikace (true);
možnosti.setMode (fc :: kUdp);
// Vytvořte objekt FTP fc :: Control. Jakmile je vytvořen,
// fc :: Objekt volby již není požadován a může se dostat mimo rozsah.
fc :: Řízení ftp (volby);
// Připojte se k serveru s možnostmi původně poskytnutými
// fc :: Možnosti. Není-li explicitně volán connect (), pak
// připojení je odloženo, dokud není volána metoda, která potřebuje
// komunikujte přímo se serverem.
ftp.connect ();
// Uvědomte si, že i po vytvoření spojení je mnoho (ale
// ne všechny) Nastavení FTP lze stále upravovat.
fc :: Možnosti newOptions = ftp.getOptions ();
newOptions.setBandwidth (fc :: k100_Mbps);
ftp.setNewOptions (newOptions);
// Stahujte některé soubory ze serveru.
ftp.prepareRecursiveDir (fc :: Vzdálený ("/ projekt"), fc :: Místní ("/ tmp"));
ftp.download ();
...
}

Knihovnu jsme v současné době přenesli na následující platformy:

    • 32-bit Windows
    • 64-bit Windows
  • Linux 64-bit (.deb)
  • Linux 64-bit (.rpm)
  • Linux ARM 7 32-bit (.deb)
  • Linux ARM 7 32-bit (.rpm)
  • OSX 64-bit

Pokud potřebujete port na konkrétní platformu, kontaktujte nás s podrobnostmi.