pessoal to com dificuldades no seguinte código
eis meu servlet :
package servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends javax.servlet.http.HttpServlet {
static final long serialVersionUID = 1L;
static Connection conn;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doExecute(request, response);
}
public static void initConnection() throws Exception {
String DRIVER = "oracle.jdbc.driver.OracleDriver";
String URL = "jdbc:oracle:thin:@localhost:1521:xe";
String USER = "puudia";
String PASSWORD = new String("puudia");
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USER, PASSWORD);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doExecute(request, response);
}
protected void doExecute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// isso aqui tem que pegar o usuario logado, caso contrario -1 anonymous
int idusu = 1;
try {
initConnection();
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List items = upload.parseRequest(request);
int i = 0;
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
// somente se o cmapo do
if (item.isFormField() == false) {
int id = 0;
// pegar o id da foto
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select sfot_id.nextval xxx from dual");
if (rs.next()) {
id = rs.getInt("xxx");
}
rs.close();
rs = null;
stmt.close();
stmt = null;
String fileName = item.getName();
String ext = fileName.substring(fileName.lastIndexOf("."), fileName.length());
String file = "D:\\Projetos\\puudia\\web\\fotos\\f"+id+ext;
String url = "f"+id+ext;
InputStream is = item.getInputStream();
FileOutputStream fos = new FileOutputStream(new File(file));
// gravar foto
byte[] b = new byte[1024];
while (is.read(b) != -1) {
fos.write(b);
}
fos.flush();
fos.close();
fos = null;
is.close();
is = null;
PreparedStatement ps = conn.prepareStatement("insert into puudia.foto(fot_id, usu_id, fot_url, fot_descricao, fot_data) values(?, ?, ?, ?, sysdate)");
ps.setInt(1, id);
ps.setInt(2, idusu);
ps.setString(3, url);
ps.setString(4, "foto sem comentário");
ps.executeUpdate();
ps.close();
ps = null;
}
}
ele faz o seguinte, envia a o endereço da foto pra uma pasta, envia o endereço da foto para o banco de dados
mais o comentário não vai!
alguém pode me ajudar?
alem do mais se alguems souber como colocar um sistema de tags pra foto ficaria grato!
