O upload de arquivo é uma função muito comum no site. Você deve analisar os parâmetros de solicitação diretamente usando o servlet para obter arquivos carregados, o que é bastante problemático. Portanto, você geralmente escolhe usar a ferramenta de código aberto Apache, FileUpload comum. Este pacote JAR pode ser encontrado no site oficial do Apache, ou sob a pasta Lib de Struts. A função do upload do Struts é baseada nessa implementação.
O Common-FileUpload depende do pacote Comum-Io, para que você também precise baixar este pacote. Em seguida, importe -o no caminho do seu projeto.
Use o código da seguinte maneira
pacote oop.hg.ytu.servlet; importar java.io.file; importar java.io.ioException; importar java.io.inputStream; importar java.util.list; importar javax.servlet.servletexception; importar javax.servlet.http.httpServlet; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; importar oop.hu.ytu.dao.uploadDomain; importar org.apache.commons.fileupload.fileitem; importar org.apache.commons.fileupload.disk.diskfileItemFactory; importar org.apache.commons.fileupload.servlet.servletfileUpload; A classe pública Upload estende httpServlet { / *** lidar com a solicitação de upload do usuário* / private estático final serialversionuid = 1L; public void Doget (solicitação httpServletRequest, httpServletResponse Response) lança servletexception, ioexception {// string descreve = request.getParameter ("descrever"); DiskFileItemFactory Factory = new DiskFileItemFactory (); @Suppresswarnings ("deprecação") string path = request.getRealPath ("/upload"); // Defina o caminho do buffer de disco Factory.SetRepository (novo arquivo (caminho); Factory.SetSizETHreshold (1024*1024); // Defina o tamanho do buffer do Buffer ServletFileUpload upload = new ServletFileUpload (Factory); upload.SetSizEMAX (-1); // Configure o tamanho do limite do arquivo de upload, -1 ilimitado Try {@suppresswarnings ("desmarcado") list <FileItem> list = upload.parserequest (request); String va = null; para (Item FileItem: List) {// Nome da String = Item.getFieldName (); if (item.isformfield ()) {// julga se é um fluxo de arquivos VA = item.getString ("utf-8"); // system.out.println (nome+"="+va); /// request.setAttribute (nome, valor); } else {string value = item.getName (); // passará o nome do caminho completo int start = value.LastIndexof ("//"); String filename = value.substring (start+1); // request.setAttribute (nome, nome do arquivo); InputStream in = item.getInputStream (); UploadDomain Dao = new UploadDorDomain (); //Item.Write(New File (RealPath, FileName)); int index = filename.lastIndexOf ("."); String realfilename = filename.substring (0, índice); String type = filename.substring (índice+1); Dao.insert (in, realfilename, tipo, VA); // coloque no banco de dados}}} catch (Exceção e) {e.printStackTrace (); }} public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança servletexception, ioexception {doget (solicitação, resposta); }} Aqui, determinamos se é o fluxo ou parâmetros enviados no formulário, como enviar informações na caixa de texto e, em seguida, inseri -los no banco de dados. O código de inserção do banco de dados é o seguinte
pacote oop.hu.ytu.dao; importar java.io.inputStream; importar java.sql.connection; importar java.SQL.PreparedStatement; importar java.sql.resultset; importar oop.hg.ytu.utils.jdbcutils; /*** Forneça suporte de upload de arquivo* @Author Administrator**/public class UploadDomain {/*** Coloque o arquivo carregado no banco de dados*/public void Insert (inputStream in, string filename, string tipo, descrição) lança a exceção {// escreve uma imagem para a conexão de dados Connection = Null; Preparado estatement ps = null; ResultSet rs = null; System.out.println (descreva); tente {// 2. estabelecer uma conexão Conn = jdbcutils.getConnection (); // 3. Crie uma instrução string sql = "inserir no fileUpload (arquivo, nome do arquivo, tipo, des) valores (?,?,? ,?)"; ps = Conn.Preparestatement (SQL); ps.setBlob (1, in); ps.SetString (2, nome do arquivo); ps.SetString (3, tipo); ps.SetString (4, descreva); // 4. Execute a instrução ps.executeUpdate (); in.Close (); } finalmente {jdbcutils.free (rs, ps, conn); }}} Você pode encontrar o limite de tamanho da pergunta do preço do banco de dados padrão. Você precisa alterar a seguinte configuração em My.ini no diretório de instalação do MySQL.
[MySqld]
max_allowed_packet = 64m
Isso é tudo. Obviamente, preste atenção ao formato de codificação. Carregue o arquivo e faça -o. Outra coisa é que um dos meus nomes de colunas está definido para descrever, e o resultado é que eu conflitei com as palavras reservadas do MySQL, e as informações não podem ser inseridas. Você deve prestar atenção no futuro.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.