Toon posts:

[Java] detecteer FTP transfer type?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een java programma dat enkele directories (inclusief subdirectories) moet uploaden via ftp. Allemaal geen probleem, maar het probleem ligt bij de transfer type dat ik voor de upload moet gebruiken. Bij een binary bestand moet ik binary transfer type gebruiken en bij een ascii bestand een ascii transfer type.

In het huidige programma controlleer ik de extensie en aan de hand hiervan set ik de transfer type. Dus:
.htm -> ASCII
.jpg -> BINARY
.txt -> ASCII
.exe -> BINARY

Dat werkt goed, maar het kan voorkomen dat er een bestand met onbekende extensie word geupload.

Is er een cross platform oplossing om te detecteren of een lokaal bestand via ASCII of BINARY transfer type moet worden geupload via FTP?

:7

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Nee, maar voor ascii weet je wel dat in principe alleen de eerste 7 bits gebruikt mogen worden. Als er een bepaalde hoeveelheid waarden voorkomen met code >127 in de source file, dan zou je automatisch voor binary kunnen gaan. Maar dit is slechts een heuristiek.

Misschien dat iemand wel ergens een grote tabel heeft met file extentie en uploadtype.

Bovendien zou ik per default binary aannemen. In principe maakt binary en ascii niet veel uit, behalve op het gebied van newlines. Dus als je een textfile per ongeluk upload als binary en het met een pc met vergelijkend platform weer opent, dan merk je geen verschil.

[ Voor 30% gewijzigd door Infinitive op 05-11-2004 15:46 ]

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Topicstarter
Het is jammer dat er geen betrouwbare oplossing is. Maar die heuristieke methode kan ik wel mooi gebruiken om een advies te geven. Dat ga ik denk ik doen.

_/-\o_

  • Kuhlie
  • Registratie: December 2002
  • Niet online
Misschien kan je ook naar de mime-type kijken. Er is een lijst van mime-types beschikbaar per extensie. Als deze type begint met "text/" dan kan je deze (eigenlijk altijd) via ascii-transfer versturen.
(Kijk maar eens in je apache/conf-directory in het bestand mime.types...)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Misschien kun je het volgende project nog even checken.
Jakarta Commons Net

Verwijderd

Topicstarter
Ik moet toch eens wat meer online komen, zodat ik wat sneller kan reageren op jullie replies. O-)

Alarmnummer, ik gebruik de commons net ftp classe voor m'n ftp zaakjes, alleen moet je hier ook de transfer type "setten". Ik moet nog wel een keer een upgrade doen want ik gebruik zo te zien nog een api waarvan al een nieuwe api is die niet downward compatible is. |:(

De mime-type is een goeie tip, die kan ik gewoon mee leveren met m'n programma en hem parsen dan kan de meer geavanceerde gebruiker zelf kiezen van ascii en wat binary is.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Het is per definitie onmogelijk cross-platform, want (1) Unix heeft geen verschil en (2) OpenVMS heeft het verschil vastgelegd in het FS. Dat is zo fundamenteel verschillend, daar kun je geen common code voor maken.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

is het niet gewoon zo dat als ascii 0 ergens voorkomt vóór het einde van je file dat het dan binair upgeload moet worden?
Pagina: 1