9
votes

API de transfert de fichier Java

J'ai besoin de transférer des fichiers sur mon serveur Web pour le traitement et j'aimerais le faire de manière générique si possible.

Je dois pouvoir transférer des fichiers des protocoles suivants au minimum (avec plus Suivre finalement):

HTTP
Ftp
SCP

J'aimerais vraiment pouvoir envoyer des fichiers à SMTP également

Donc, ma question, y a-t-il une boîte à outils disponible qui le fait déjà? Si tel est le cas, il doit être open source car cela fait partie d'un projet open source.

S'il n'y a pas de boîte à outils qui le fait déjà, quelle est la meilleure façon de structurer une interface qui va gérer la plupart transferts de fichier?

J'ai pensé à quelque chose comme ceci: xxx

puis une usine qui prend l'URL source ou le protocole et instancie le fichier correct gestionnaire.


2 commentaires

Cela doit-il être open source ou êtes-vous prêt à payer une solution?


Mon projet est lui-même open source. Ainsi, j'ai besoin d'une solution ouverte ou de rouler le mien. J'ai commencé à intégrer Apache VFS.


4 Réponses :


6
votes

Apache Commons VFS parle à ce problème, bien qu'un chèque rapide ne montrait pas cela fera SCP ou SMTP. Net de la communication SMTP, mais je ne sais pas que vous pourriez obtenir l'interface commune de la boîte. Pour SCP , voici quelques possibilités.

La ligne finale semble être de vérifier la mise en œuvre de VFS et de voir si elle vous fait quelque chose pour vous, peut-être que vous pouvez l'étendre pour différents protocoles. Si ce n'est pas approprié, concernant votre interface, vous allez probablement vouloir que toutes les références de fichiers distants soient des chaînes plutôt que des objets de fichier, et spécifiquement une chaîne représentant une URI pointant vers l'emplacement distant et vous indiquant quel protocole à utiliser. < / p>


1 commentaires

Il peut être nécessaire d'utiliser plusieurs bibliothèques, car on ne soutiendra probablement pas tout ce que vous voulez. VFS prend en charge SFTP, mais pas SMTP.



2
votes

Je travaille très très similaire à la vôtre, je n'ai pas trouvé de solution open source, alors j'essaie d'esquisser une solution moi-même. C'est ce que j'ai trouvé.

Je pense que vous devriez représenter InputSources et SortiSources comme des choses différentes, comme p> xxx pré>

alors vous devez avoir un mouvement pour décrire la saisie de la sortie. P> xxx pré>

une classe pour décrire la liste des mouvements à faire. p> xxx pré>

puis une classe pour effectuer le travail lui-même. p> xxx pré>

le code qui utiliserait cela fonctionnerait comme ça : P>

FileMover fm=new FileMover();

//Register your sources and your destinations
fm.addInputToRegistry(input);
fm.addOutputToRegistry(output)

// each time you have to make a movement create a MovementDescriptor and call
fm.transferFiles(movementDescriptor)


2 commentaires

Avez-vous réussi à obtenir ce travail? Je suis intéressé par vos progrès alors que je regarde quelque chose de similaire


Malheureusement, je n'avais pas le temps d'y aller beaucoup depuis, mais je me souviens d'avoir fait un petit prototype qui était efficace



0
votes

Je pense JSCH implémente SCP, de sorte que cela couvre celui-ci.


0 commentaires

0
votes

Veuillez utiliser JCRAFT. Ouvrez le canal "SFTP" et essayez cela.


0 commentaires