Eu sempre enviei arquivos usando o formulário para fazer upload de arquivos. Também vi pessoas enviarem arquivos usando JS, mas parece bastante simples, então não prestei muita atenção a ele. Hoje, de repente, eu queria usar esse método para fazer upload de arquivos e encontrei alguns problemas durante esse período. Portanto, é registrado para que você possa verificar se encontrar esses problemas no futuro.
A primeira coisa é introduzir arquivos JS e AjaxFileUpload, que não precisam ser ditos muito.
Depois, há Ajax solicitando o endereço de segundo plano. O código é o seguinte:
<div> <input type = "file" id = "upload" name = "upload" style = "font-size: 0; opacidade: 0; largura: 100%; altura: 100%; posição: absoluto; esquerda: 0; top: 0;"/> <pan> Arquivo </span> </div> ("#upload"). '/teste/usuário/imgupload', // Tipo de endereço de solicitação de back -end: 'post', // Método de solicitação Quando você deseja enviar um parâmetro personalizado, esse parâmetro deve ser definido para postar seguro: False, // se é necessário ativar o tipo de arquivo. 'JSON', // o tipo de dados retornado pelo servidor pode ser XML, Script, JSON, HTML. alerta (json.retmsg);Quando o código front-end for concluído, o código de segundo plano será desenvolvido.
pacote com.roc.test; importar java.io.file; importar java.util.list; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpsLetLeSponse; import.ws.s.s.consumes; javax.ws.rs.produces; importar javax.ws.rs.queryParam; importar javax.ws.rs.core.context; importar javax.ws.rs.core.mediatype; importação net.sf.json.jsonObject; importação.apache.commmons.fileUplOad.FileMeM; org.apache.commons.fileupload.disk.diskfileItemFactory; importar org.apache.commons.fileupload.servlet.servletfileupload; importflishfishfishfishfismy; net.sf.json.jsonObject;/** * Arquivo de upload * @author liaowp * */ @controlador @path ("/user") public class uploadimg {@path ("/imgupload") @Post @Produces ("Application/json; charset = utf-8")) Upload jsonObject (@QueryParam ("OrderId") String OrderId,@context httpServletRequest solicitação,@context httpServletResponse resposta) {jsonObject jsonObj = new jsonObject (); String file_path = request.getSession (). GetServletContext (). GetRealPath ("/")+file.separator+"corpfile"+file.separator; // File Storage Path String upload_file_path = ""; Arquivo de arquivo = novo arquivo (file_path); if (! file.exists () &&! file.isdirectory ()) {// Se a pasta não existir, crie file.mkdir (); upload_file_path = file_path; } else {upload_file_path = file_path; } DiskFileItemFactory Factory = new DiskFileItemFactory (); // defina a fábrica fábrica.setRepository (novo arquivo (file_path)); // Defina o armazenamento de arquivos Factory.SetSizethReshold (2048 * 1024); // o tamanho do conjunto, se o arquivo for menor que o tamanho do conjunto; upload.setheadeRencoding ("UTF-8"); // Este é o código para processar nomes de arquivos chineses. De fato, existe apenas uma linha string filename = ""; Lista <FileItem> List; JsonObject jsonObj = new jsonObject (); tente {list = upload.parserequest (request); para (FileItem Item: List) {if (item.isformfield ()) {string name = item.getfieldName (); String value = item.getString ("UTF-8"); } else {string name = item.getfieldName (); String value = item.getName (); nome do arquivo = nome + ".jpg"; if (item.getSize ()> 10485760) {// Olá, o arquivo de upload deve ser menor que 10m! jsonobj.put ("Retcode", "100"); jsonObj.put ("retmsg", "Olá, fazer upload do arquivo deve ser menor que 10m!"):} else {// Carregar com sucesso item.write (novo arquivo (upload_file_path, nome do arquivo)); System.out.println (file.separator + "corpfile" + file.separator + nome do arquivo); jsonObj.put ("Retcode", "0"); jsonObj.put ("retmsg", "Olá, upload com sucesso!"); }}}}} catch (Exceção e) {// Falha no upload E.PrintStackTrace (); jsonobj.put ("Retcode", "9999"); jsonobj.put ("retmsg", "Olá, upload de arquivo falhou"); } retornar jsonObj; }}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.