Accedi per seguire   
Seguaci 0
cln

Codice Per Eseguire Upload!

9 messaggi in questa discussione

Salve a tutti, sto progettando una applicazione jsp e volevo inserire un modulo per far eseguire l'upload di file da parte dell'utente sul server, ma non ho la più pallida idea di come fare!!! :)

Ringrazio chiunque sappia consigliarmi o spiegarmi come fare

Modificato da cln

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

[ben]cln[/ben]

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Per prima cosa creiamo in una pagina il form attraverso il quale l'utente può scegliere il file da caricare:

<form enctype="multipart/form-data" method="post" action="upload.jsp">
  <input type="file" name="file">
  <input type="submit" value="Invia">
</form>

Ora invece pensiamo all'upload vero e proprio, la pagina in questo caso si chiamerà upload.jsp come specificato nel campo action del form

if (FileUpload.isMultipartContent(request))
{
  DiskFileUpload upload = new DiskFileUpload();
  List items = upload.parseRequest(request);
  Iterator itr = items.iterator();
  while(itr.hasNext())
  {
  FileItem item = (FileItem) itr.next();
  if(!item.isFormField())
  {
	 File fullFile = new File(item.getName());  
	 File savedFile = new File(getServletContext().getRealPath("/"),
	 fullFile.getName());
	 item.write(savedFile);
  } 
  }
}

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Salve a tutti...io dovrei fare l'upload di una immagine in jsp...ho applicato il codice postato poco fa e ho scaricato i jar di apache common necessari...ma mi viene lanciata quest'eccezione:

javax.servlet.ServletException: org/apache/commons/io/output/DeferredFileOutputStream

Come posso risolvere cio'? vi prego aiutatemi :sigh:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Per curiosità qual'era il tuo problema?? :)

(nel caso qualcuno si trovasse nel tuo stesso pasticcio almeno saprebbe come cavarsela) ;-)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ho applicato il codice per l'upload di una immagine postato all'inizio della discussione però mi veniva lanciata un'eccezione (postata nel mio messaggio su), girando in alcuni forum inglesi ho trovato del codice, più lungo rispetto a quello qui sopra...posso postarlo ugualmente il codice che ho trovato nonostante appartiene ad un altro forum?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Credo che non esista alcuna norma che vieti di farlo...l'autore di quel frammento di codice non penso che l'abbia brevettato...

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ok allora lo posto:

questa è la pagina html dove uploadare l'immagine:

<body>
<form name="uploadForm" action="upload.jsp" enctype="multipart/form-data" method="post">
 <input type="file" name="file">
 <input name='Upload' Value='Upload' onClick="document.uploadForm.submit()" type="button">
</form>
</body>

e questa è la pagina "upload.jsp" (è un pò lunghina):

<%

response.setContentType("text/html");
response.setHeader("Cache-control","no-cache");
String err = "";
String lastFileName = "";

String contentType = request.getContentType();	

String boundary = "";
final int BOUNDARY_WORD_SIZE = "boundary=".length();
if(contentType == null || !contentType.startsWith("multipart/form-data")) {
  err = "Ilegal ENCTYPE : must be multipart/form-data\n";
  err += "ENCTYPE set = " + contentType;
}else{
  boundary = contentType.substring(contentType.indexOf("boundary=") + BOUNDARY_WORD_SIZE);
  boundary = "--" + boundary;
  try {
	javax.servlet.ServletInputStream sis = request.getInputStream();

	byte[] b = new byte[1024];
	int x=0;
	int state=0;
	String name=null,fileName=null,contentType2=null;
	java.io.FileOutputStream buffer = null;
	boolean stamp=false;
	while((x=sis.readLine(b,0,1024))>-1) {
	  String s = new String(b,0,x);			

	  if(s.startsWith(boundary)) {
		state = 0;
		name = null;
		contentType2 = null;
		fileName = null;


	  }else if(s.startsWith("Content-Disposition") && state==0) {
		state = 1;
		if(s.indexOf("filename=") == -1)
		  name = s.substring(s.indexOf("name=") + "name=".length(),s.length()-2);
		else {
		  name = s.substring(s.indexOf("name=") + "name=".length(),s.lastIndexOf(";"));
		  fileName = s.substring(s.indexOf("filename=") + "filename=".length(),s.length()-2);
		  if(fileName.equals("\"\"")) {
			fileName = null;
		  }else {
			String userAgent = request.getHeader("User-Agent");
			String userSeparator="/";  // default
			if (userAgent.indexOf("Windows")!=-1)
			  userSeparator="\\";
			if (userAgent.indexOf("Linux")!=-1)
			  userSeparator="/";
			fileName = fileName.substring(fileName.lastIndexOf(userSeparator)+1,fileName.length()-1);
			if(fileName.startsWith( "\""))
			  fileName = fileName.substring( 1);
		  }
		}
		name = name.substring(1,name.length()-1);
		if (name.equals("file")) {
		  if (buffer!=null)
			buffer.close();
		  lastFileName = fileName;
		  //fileName="admin.jpg";
		  buffer = new java.io.FileOutputStream("/Programmi/Apache Software Foundation/Tomcat 5.5/webapps/Forum/Images/tmp/"+fileName);
		}
	  }else if(s.startsWith("Content-Type") && state==1) {
		state = 2;
		contentType2 = s.substring(s.indexOf(":")+2,s.length()-2);
	  }else if(s.equals("\r\n") && state != 3) {
		state = 3;
	  }else {
		if (name.equals("file"))
		  buffer.write(b,0,x);
	  }
	}
	sis.close();
	buffer.close();
  }catch(java.io.IOException e) {
	err = e.toString();
  }
}
boolean ok = err.equals("");
if(!ok) {
  out.println(err);
}else{
%>
<script language="javascript">
 //history.back(1)
 alert('Uploaded <%=lastFileName%>');
 //window.location.reload(false)
</SCRIPT>
<%
}
out.println("done");
%>

Da segnalare che:

1) ho scaricato giorni prima i jar apache common che ho letto servono per l'upload ma non so se questo codice funziona ugualmente senza;

2) la riga:

buffer = new java.io.FileOutputStream("/Programmi/Apache Software Foundation/Tomcat 5.5/webapps/Forum/Images/tmp/"+fileName);

indica appunto il percorso lato server su cui salvare il file...

Il mio dubbio ora è: con questo codice come faccio per ottenere il percorso completo del file scelto?

ho provato con "request.getParameter("file");" dove appunto "file" è la casella della pagina html dove carichiamo l'immagine ma mi vien restituito "null"...cm posso fare?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0