Upload de imagem da web java e upload de arquivo
O upload da imagem e o upload de arquivo são essencialmente os mesmos, e a própria imagem também é um arquivo. O upload de arquivo é fazer upload de imagens para o servidor. Embora existam muitas maneiras, a implementação subjacente é sobre leitura e gravação de arquivos.
Coisas a serem observadas
1. O formulário deve escrever o atributo Enctype = "Multipart/Form-Data"
2. Para garantir que o arquivo possa ser carregado com sucesso, o valor do atributo de nome do controle do arquivo deve ser consistente com o nome da variável da camada de controle que você enviou.
Por exemplo, se o nome do espaço for um arquivo, você precisará defini -lo em segundo plano
arquivo de arquivo privado; // Nome do controle de arquivo
String privada FileContentType; // Tipo de imagem
private string filefilename; // Nome do arquivo
1.JSP Página
<%@ página linguagem = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitório //" <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <meta http-equiv = "pragma" content = "sem cache"/> <base = "_ self"> <title> uplargon </title> </hief> ENCTYPE = "Multipart/Form-Data"> <input type = "file" name = "file" value = "arquivo"> <input type = "submit" value = "identificar"> </mand> </body> </html>
1. Controlador que precisa ser enviado para dados da página
package com.cpsec.tang.chemical.action;import java.io.File;import java.io.IOException;import java.util.Random;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;import org.springframework.stereotype.Controller;import com.cpsec.tang.chemical.biz.LunboBiz;import com.cpsec.tang.chemical.entity.Image;import com.opensymphony.xwork2.ActionSupport;@Controller("lunboAction")public class LunboAction extends Actionsupport { / ** * * / private estático final serialversionuid = 1L; @Resource (name = "lunbobiz") privado lunbobiz lunbobiz; imagem privada imagem; arquivo de arquivo privado; // Nome do controle do arquivo Private String FileContentType; // Tipo de imagem Private String FileFilename; // Nome do arquivo Número inteiro privado; public string findImage () {image = lunbobiz.findImage (); sucesso de sucesso; } public string alterImage () {image = lunbobiz.findImage (); sucesso de sucesso; } public string alterImage1 () {httpServletRequest request = servletActionContext.getRequest (); String root = request.getRealPath ("/upload"); // o caminho do servidor para o qual a imagem deve ser carregada nomes de strings [] = fileFileName.split ("//."); String filename = ""; if (names.length> = 1) {filename = getRandomString (20)+"."+nomes [names.length-1]; } String picpath = "upload/"+filename; // caminho da imagem salva no arquivo do banco de dados FILE1 = novo arquivo (root); tente {fileutils.copyfile (arquivo, novo arquivo (file1, nome do arquivo)); }} catch (ioexception e) {e.printStackTrace (); } retornar sucesso; } /*Obtenha uma string aleatória* /public string getRandomString (int length) {// comprimento indica o comprimento da sequência de string gerada Base = "abcdefghijklmnopqrStUvwxyz0123456789"; Aleatório aleatório = novo aleatório (); StringBuffer sb = new StringBuffer (); for (int i = 0; i <comprimento; i ++) {int number = aleatom.nextInt (base.length ()); sb.append (base.charat (número)); } return sb.toString (); }}Isso é para fazer upload de arquivos copiando, e existem outras maneiras
Método 2
@Controller ("ContratAction") A contratação de classe pública estende o ACTIONSupport {private final Static String uploaddir = "/files"; // O caminho para fazer o upload do arquivo, criar um arquivo privado em WebContent; // o nome de controle de entrada deve ser arquivo // carregar o nome do arquivo private string filefilename; // Carregar o arquivo de conteúdo do arquivo Coleção Private String FileContentType; nome do arquivo de string privado; public string upload () lança fileNotfoundException, ioexception {string path = uploadfile (); // o caminho para o arquivo salvar o banco de dados retornar sucesso; } // Execute a função de upload @suppresswarnings ("deprecação") public string uploadfile () lança fileNotfoundException, ioexception {try {inputStream em = new FileInputStream (arquivo); String dir = servLetActionContext.getRequest (). GetRealPath (uploaddir); Arquivo fileLocation = novo arquivo (dir); // Você também pode criar manualmente o diretório de upload de destino no diretório raiz do aplicativo if (! Filelocation.exists ()) {boolean isCreated = filelocation.mkdir (); Se (! isCreated) {// criado falhou ao criar o diretório de upload de destino, outros processamento podem ser feitos, como lançar uma exceção personalizada, etc. Essa situação geralmente não deve ocorrer. retornar nulo; }} // this.setFileFilename (getRandomString (20)); String [] nome = this.getFileFilename (). Split ("//."); String filename = getRandomString (20)+"."+Nome [name.length-1]; this.setFileFilename (nome do arquivo); System.out.println (nome do arquivo); FILE UPLOPLEFILE = novo arquivo (Dir, nome do arquivo); OutputStream out = new FileOutputStream (uploadFile); byte [] buffer = novo byte [1024 * 1024]; comprimento int; while ((comprimento = in.read (buffer))> 0) {out.Write (buffer, 0, comprimento); } in.close (); out.Close (); Retorne o uploaddir.substring (1)+"//"+FileFilename; } catch (filenotfoundException ex) {return null; } catch (ioexception ex) {return null; }} public static string getRandomString (int length) {string str = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789"; Aleatório aleatório = novo aleatório (); StringBuffer sb = new StringBuffer (); for (int i = 0; i <comprimento; i ++) {int number = aleatom.nextInt (62); sb.append (str.charat (número)); } return sb.toString (); }}Além do upload de imagem única, existem vários uploads de imagem e os princípios são os mesmos
pacote com.cpsec.tang.chemical.action; importar java.io.file; importar java.io.fileInputStream; importar java.io.filenotfoundException; importar java.io.fileOutputStream; importar java.io.ioException; importar java.io.inputStream; importar java.io.OutputStream; importar java.util.list; importar javax.servlet.http.httpServletRequest; importar org.apache.struts2.servLeActionContext; importar com.opensymphony.xwork2.actionPorport; "/carregar"; // Faça o upload da lista de coleta de arquivos <File> arquivo; // Carregar Nome do arquivo Coleção Lista privada <String> FileFilename; // Carregar o arquivo de conteúdo de arquivo Tipo de coleta Lista privada <String> FileContentType; list public <File> getFile () {return file; } public void setFile (list <File> arquivo) {this.file = file; } list public <string> getFileFilename () {return fileFilename; } public void setFileFilename (list <string> fileFilename) {this.filefilename = fileFileName; } Lista pública <String> getFileContentType () {return fileContentType; } public void setFileContentType (List <String> FileContentType) {this.FileContentType = FileContentType; } public String uPLOPLORFForm () lança Exceção {httpServletRequest request = servletActionContext.getRequest (); String webpath = null; // Carga de upload para (int i = 0; i <file.size (); i ++) {// loop upload cada arquivo uploadfile (i); webpath = "upload/"+this.getFileFileName (). get (i); } retornar "sucesso"; } // Execute a função de upload Private String uploadFile (int i) lança fileNotfoundException, ioexception {try {inputStream in = new FileInputStream (file.get (i)); String dir = servLetActionContext.getRequest (). GetRealPath (uploaddir); Arquivo fileLocation = novo arquivo (dir); // Aqui você também pode criar manualmente o diretório de upload de destino no diretório raiz do aplicativo if (! Filelocation.exists ()) {boolean isCreated = filelocation.mkdir (); se (! isCreated) {// Se o diretório de upload de destino for criado, outros processamento poderão ser feitos, como jogar uma exceção personalizada, etc. Essa situação não deve ocorrer. retornar nulo; }} String filename = this.getFileFileName (). Get (i); FILE UPLOPLEFILE = novo arquivo (Dir, nome do arquivo); OutputStream out = new FileOutputStream (uploadFile); byte [] buffer = novo byte [1024 * 1024]; comprimento int; while ((comprimento = in.read (buffer))> 0) {out.Write (buffer, 0, comprimento); } in.close (); out.Close (); return uploadfile.toString (); } catch (filenotfoundException ex) {return null; } catch (ioexception ex) {return null; }}}Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!