EN UN JSP ESTOY HACIENDO UN UPLOAD DE IMAGEN, EN DONDE EXISTE UN COMBOBOX QUE CARGA LOS DIRECTORIOS CREADOS PARA ALMACENAR DICHA IMAGEN.
LA IDEA ES SELECCIONAR EL NOMBRE DE LA CARPETA EN EL COMBOBOX Y SUBIR LA IMAGEN A ESA MISMA. TODO ESTO EN UN SOLO JSP.
MI DUDA ES QUE EL VALOR DEL SELECT AL MANDARLO AL SCRIPT DEL UPLOAD IMAGEN LO TOMA COMO NULL, POR LO QUE LA IMAGEN NO SE SUBE DONDE EL USUARIO QUIERE.
CODIGO:
<form action="upload.jsp" method="POST" name="frm" enctype="multipart/form-data">
<input type="file" name="theFile"><br>
<table>
<tr><td>
<select name="tematica" onChange="nom_tema.value=this.value;" >
<%
//Para Metodo Buscar Id
PruebaService OutC = new PruebaService();
List listaOutNum = new ArrayList();
listaOutNum=OutC.getPruebaBuscar();
if (listaOutNum != null) {
if (!listaOutNum.isEmpty()) {
for (Iterator iter = listaOutNum.iterator(); iter.hasNext();) {
Tematica consultaOut = (Tematica)iter.next();
int id_per = consultaOut.getId_tema();
String nombre_tematica = consultaOut.getId_nombre();
%>
<option value="<%=nombre_tematica%>">
<%out.print(nombre_tematica);%>
</option>
<%
}
}
}
%>
</select>
<input type="text" name="nom_tema"><br>
<input type="submit" name="enviar" value="Enviar">
</td></tr>
</table>
</form>
<%
//***************CODIGO IMAGEN************
String contentType = request.getContentType();
System.out.println("Content type is :: " +contentType);
if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
DataInputStream in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
while (totalBytesRead < formDataLength) {
byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
totalBytesRead += byteRead;
}
String file = new String(dataBytes);
String saveFile = file.substring(file.indexOf("filename=\"") + 10);
//out.print("FileName:" + saveFile.toString());
saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
//out.print("FileName:" + saveFile.toString());
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
//out.print("FileName:" + saveFile.toString());
//out.print(dataBytes);
int lastIndex = contentType.lastIndexOf("=");
String boundary = contentType.substring(lastIndex + 1,contentType.length());
//out.println(boundary);
int pos;
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
saveFile = "C:/Documents and Settings/isuazo/workspace/ejemplo/WebRoot/"+saveFile;
FileOutputStream fileOut = new FileOutputStream(saveFile);
//fileOut.write(dataBytes);
fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.flush();
fileOut.close();
out.println(" File saved as " +saveFile);
}
///******FIN CODIGO IMAGEN
%>
</body>