PDA

Visualizza la versione completa : [java] Da DataOutputStream a FileOutputStream...


fraper
22-03-2005, 10:51
Salve a tutti, ho questa esigenza...
...mi spiego...devo creare un file e scriverlo su un URL che "http://localhost:8080/prova.pdf"

per aprire la connessione all'URL faccio cos


URL mioURL = new URL();
connection = mioURL.openConnection(http://localhost:8080/prova.pdf);
boolean f = true;
connection.setDoOutput(f);
DataOutputStream fos = new DataOutputStream (connection.getOutputStream());

Adesso (ammesso che quello scritto sopra sia corretto), devo dare il path con l'URL ad un metodo
che mi crea un pdf al path specificato (attualmente avrei il path nell'oggetto "fos")....il problema
che se passo fos al metodo per la creazione del pdf, mi d errore, tale metodo vuole un
FileOutputStream...come posso risolvere?

Come posso avere un oggetto DataOutputStream in un FileOutputStream???

o comunque quale il modo per poter creare sto file sull'URL specificato??

Grazie a tutti.

V1RuZ
22-03-2005, 11:10
try{
URL u = new URL("http://127.0.0.1/temp.pdf");
InputStream is = u.openStream();
FileOutputStream fos = new FileOutputStream("c:/temp.pdf");
int c=0;
while((c=is.read())!= -1){
fos.write(c);
}

fos.close();
}catch(Exception e){
System.out.println("Eccezione: " + e.toString());
}

fraper
22-03-2005, 13:39
adesso provo grazie...lo stesso lo posso fare per un FileInputStream?

V1RuZ
22-03-2005, 14:54
non capisco la tua richiesta...potresti spiegare meglio che devi fare con questo FileInputStream?

fraper
22-03-2005, 15:04
Ciao Viruz....ti ringrazio per la risposta...il problema che il codice non funziona...mi spieghi
meglio cosa fa???

Non so se hai capito cosa devo fare io...io devo scrivere un file PDF su un URL che

"http://localhost:8080/prova.pdf"...

fondamentalmente devo creare un pdf che si chiama "prova.pdf" al path specificato dall'URL

V1RuZ
22-03-2005, 15:08
quel codice semplicemente fa una get http sulla url specificata e salva quello che legge in un file...
dovresti spiegare un po' meglio ci che devi fare perche non ancora capito....

V1RuZ
22-03-2005, 15:16
ah no asp ho capito...tu vuoi aprire una url e scriverci un file dentro? beh credo che questo non si possa fare xch al max verso una url puoi farci un post non scriverci un file come se stessi scrivendo su filesystem

fraper
22-03-2005, 17:21
e come posso fare allora? Dovrei crearlo localmente e fare un upload? Potresti darmi qualche riga di codice di esempio?

V1RuZ
22-03-2005, 20:27
Allora il discorso questo:
se la macchina sulla quale devi spostare questo file in locale, allora lo sposti da filesystem a filesystem e questo lo sappiamo fare...
se la macchina remota e hai a disposizione un server http, allora:
dal client devi effettuare una post http o in qualsiasi altra forma, verso una pagina dinamica che accetta la post con il file e lo salva su file system...

V1RuZ
22-03-2005, 21:32
Ecco un po' di codice per fare una POST HTTP di un file


String bndry = "AaB03x";
String paramName = "file";
String fileName = "filename.txt";
HttpURLConnection httpcon = (HttpURLConnection) ((new URL(url).openConnection()));
httpcon.setDoOutput(true);
httpcon.setRequestMethod("POST");
httpcon.setRequestProperty("Content-type", "multipart/form-data, boundary=" +bndry);
httpcon.connect();
File file = new File(docPath);
FileInputStream is = new FileInputStream(file);
OutputStream os = httpcon.getOutputStream();
String disptn = "--" +bndry
+"\r\ncontent-disposition: form-data; name=\"" +paramName
+"\"; filename=\"" +fileName
+"\"\r\nContent-Type: text/plain\r\n\r\n";
os.write(disptn.getBytes());


byte[] buffer = new byte[4096];
int bytes_read;
while((bytes_read = is.read(buffer)) != -1) {
os.write(buffer, 0, bytes_read);
}

String boundar = "\r\n--" +bndry +"--";
os.write(boundar.getBytes());

os.flush();
os.close();
is.close();

Loading