Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Upload na Glassfish

Ahoj!

Potřeboval bych otestovat uploadovací rozhraní na serveru Glassfish. Moje webová aplikace na něm jede, netuším však, jak doplnit skript, který bude zprostředkovávat uložení na server (počká na zaslaný soubor a ten pak uloží na zadanou adresu). Máte někdo s tímto zkušenosti? (vím zhruba, jak napsat samotný skript, jde mi přímo o to jak ho použít konkrétně s Glassfishem)

Moc děkuji za všechny odpovědi, Martin

Předmět Autor Datum
Pokud vím, tak GlassFish je aplikační server pro javovské aplikace. Uprav aplikaci a proveď deploy n…
Jan Fiala 03.11.2014 15:05
Jan Fiala
Omlouvám se, ale moc jsem tě nepochopil. Normální WEB aplikace mi tam jede taky, pokud nahážu soubor…
Katsushiro 03.11.2014 15:11
Katsushiro
já se bojím, že zaměňuješ webový frontend se samotnou aplikací...
touchwood 03.11.2014 15:31
touchwood
Ok, moje appka nemá žádné jádro v Javě, funkcionalita je napsaná jen v JavaScriptu (pro upload využí…
Katsushiro 03.11.2014 15:35
Katsushiro
Ahoj, chcel som reagovať na tvoj predchádzajúci príspevok, kedy si hľadal možnosti pre vytvorenie lo…
los 03.11.2014 18:41
los
Wow, o Node.js jsem doteď neslyšel, ale jak tak koukám, je to fakt geniální :-) Ale jak koukám, tak…
Katsushiro 04.11.2014 15:18
Katsushiro
Aby si sa dostal k ostatným súborom, tak musíš vypočítať cestu v súborovom systéme z request.url: v…
los 04.11.2014 18:03
los
Hrozně moc díky ;-) Tohle jsem nikde ani zmínkou nenašel :-D Poslední otázka - můžeš mi, prosím přib…
Katsushiro 05.11.2014 23:42
Katsushiro
Musíš rozparsovať telo požiadavky typu multipart/form-data. Najjednoduchšie je použiť nejakú knižnic…
los 06.11.2014 17:47
los
Moc děkuji za radu ;-) Pokračování dotazu (pro přehlednost jsem založil nové téma, když samotný dot… poslední
Katsushiro 16.11.2014 00:38
Katsushiro

Ahoj, chcel som reagovať na tvoj predchádzajúci príspevok, kedy si hľadal možnosti pre vytvorenie lokálneho servera pre hostovanie tvojej aplikácie, ale keďže nebol v kategórii Programovanie, tak som to našiel až teraz.

Takže k veci: Možností je viac, ale v princípe musíš upload súborov riešiť na serveri. To znamená, že od zvoleného servera závisí, aký jazyk môžeš použiť. Keďže si si zvolil Glassfish, tak pre upload treba implementovať javový servlet.

Ďalšie servery, ktoré pripadajú do úvahy sú:
- PHP: Od PHP 5.4 je súčasťou PHP zabudovaný webový server (spúšťa sa: php -S localhost:8000)
- node.js: Implementovať server v node.js je jednoduché (veľa príkladov, používa sa JavaScript)
- Jetty: Ak by som šiel cestou Javy, tak by som zvolil skôr Jetty (je viac lightweight).

Skoro pre každý jazyk nájdeš na nete príklad, ako si implementovať vlastný webový server, takže je to len o tom, čo uprednostňuješ.

Wow, o Node.js jsem doteď neslyšel, ale jak tak koukám, je to fakt geniální :-)

Ale jak koukám, tak koukám, nemůžu najít, jak nahodit na server normální html, css a další soubory... Pokud udělám tohle:

var http = require('http');
var fs = require('fs');

http.createServer(function(req, res){

    fs.readFile('index.html',function (err, data){
        res.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length});
        res.write(data);
        res.end();
    });
}).listen(8080);

Tak je titulní stránka rozhozená a nefunkční, na zbylé soubory v téže složce (ale ne na serveru) evidentně "nevidí"... Tušíš, co s tím?

Aby si sa dostal k ostatným súborom, tak musíš vypočítať cestu v súborovom systéme z request.url:

var http = require('http');
var fs = require('fs');
var path = require('path');

http.createServer(function(request, response) {
	console.log(request.method + ' ' + request.url);
	var filePath = '.' + request.url;
	if (filePath == './')
		filePath = './index.html';
	if (filePath.indexOf('/../') !== -1) {
		response.writeHead(400);
		response.end();
	} else {
		var extname = path.extname(filePath);
		var contentType = 'text/plain';
		switch (extname) {
			case '.js': contentType = 'text/javascript'; break;
			case '.html': contentType = 'text/html'; break;
			case '.css': contentType = 'text/css'; break;
		}
		path.exists(filePath, function(exists) {
			if (exists) {
				fs.readFile(filePath, function(error, content) {
					if (error) {
						response.writeHead(500);
						response.end();
					} else {
						response.writeHead(200, { 'Content-Type': contentType });
						response.end(content, 'utf-8');
					}
				});
			} else {
				response.writeHead(404);
				response.end();
			}
		});
	}
}).listen(8125);

console.log('Server running at http://127.0.0.1:8125/');

Prípony pre určenie správneho Content-Type si môžeš pridávať podľa potreby.

Hrozně moc díky ;-) Tohle jsem nikde ani zmínkou nenašel :-D Poslední otázka - můžeš mi, prosím přiblížit, jak se dá vyřešit uložení souboru, který uploaduji pomocí webu právě z těch načtených stránek? Nemusíš psát kód, nechci tě zdržovat, stačí článek nebo alespoň nějakou zmínku, ze které bych to mohl pochopit... Jinak je mi fakt trapné, že se ptám na takové základy, ale nějak se v tom neorientuju :/

Zpět do poradny Odpovědět na původní otázku Nahoru