Siempre he cargado archivos usando formularios de formulario para cargar archivos. También he visto a personas cargar archivos usando JS, pero parece bastante simple, por lo que no le presté mucha atención. Hoy de repente quería usar este método para cargar archivos, y encontré algunos problemas durante este período. Por lo tanto, se registra para que pueda verificarlo si encuentra tales problemas en el futuro.
Lo primero es introducir archivos JS y AJAXFILEUPLOAD, que no necesitan decir mucho.
Luego está AJAX solicitando la dirección de fondo. El código es el siguiente:
<div> <input type = "file" id = "cargar" name = "cargar" style = "font-size: 0; opacidad: 0; ancho: 100%; altura: 100%; posición: absoluta; izquierda: 0; top: 0;"/> <span> seleccione Archivo </span> </Div> $ ("#Carga"). On ("Cambio", function () {$ .AJJFILEXPLOAX ({{#Carga "). '/test/user/imgupload', // Tipo de dirección de solicitud de backend: 'post', // Método de solicitud Cuando desea enviar un parámetro personalizado, este parámetro debe ser establecido para publicar SecureUri: falso, // si Atable SecureUri, el predeterminado es FALSO. 'JSON', // El tipo de datos devuelto por el servidor puede ser XML, Script, JSON, HTML. }, Error: función (json, status, e) {// La función de procesamiento ejecutada automáticamente después de que falle el envío.Cuando se complete el código frontal, se desarrollará el código de fondo.
paquete com.roc.test; import java.io.file; import java.util.list; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletresponse; import javax.rs.rs.consumes; importar; javax.ws.rs.produce; import javax.ws.rs.Queryparam; import javax.ws.rs.core.context; import javax.ws.rs.core.mediatype; import.sf.json.jsonobject; import órg.apache.commons.fileupload.fileitem; import; org.apache.commons.fileupload.disk.diskfileitemFactory; importar org.apache.commons.fileupload.servlet.servletfileUpload; import org.jboss.Resteasy.annotations.providers.jaxb.json.badgerfish; import net.sf.json.jsonObject;/** * cargar archivo * @author liaowp * */ @controler @path ("/user") public class uploadImg {@path ("/imgupload") @Post @Produce ("Application/json; charset = utf-8") upload (@QueryParam ("OrderId") String OrderId,@context httpservletRequest solicitud,@context httpServletResponse respuesta) {jsonObject jsonObj = new jsonObject (); String file_path = request.getSession (). GetServletContext (). GetRealPath ("/")+File.separator+"CorpFile"+File.separator; // Ruta de almacenamiento de archivos String upload_file_path = ""; Archivo archivo = nuevo archivo (file_path); if (! file.exists () &&! File.isDirectory ()) {// Si la carpeta no existe, crea file.mkdir (); upload_file_path = file_path; } else {upload_file_path = file_path; } DiskfileitemFactory factory = new DiskFileItemFactory (); // establecer fábrica fábrica.setRepository (nuevo archivo (file_path)); // establecer la ubicación de almacenamiento de archivos factory.setsizeThReshold (2048 * 1024); // Establecer tamaño, si el archivo es más pequeño que el tamaño establecido, colóquelo en la memoria, si es más grande que el que se coloca en Disk ServletFileUppload upload = New ServletFilePload (fechecito); upload.setheaderEncoding ("UTF-8"); // Este es el código para procesar los nombres de archivo chinos. De hecho, solo hay una cadena de línea FileName = ""; Lista de lista <sileitem>; JsonObject jsonobj = new JsonObject (); intente {list = upload.parserequest (solicitud); for (fileitem item: list) {if (item.isformfield ()) {String name = item.getFieldName (); Valor de cadena = item.getString ("UTF-8"); } else {String name = item.getFieldName (); Valor de cadena = item.getName (); FileName = name + ".jpg"; if (item.getSize ()> 10485760) {// Hola, ¡el archivo de carga debe ser inferior a 10 m! jsonObj.put ("RetCode", "100"); jsonobj.put ("Retmsg", "Hola, cargar el archivo debe ser inferior a 10 m!"):} else {// cargue con éxito item.write (nuevo archivo (upload_file_path, filename)); System.out.println (File.separator + "CorpFile" + File.separator + FileName); jsonObj.put ("RetCode", "0"); jsonobj.put ("Retmsg", "¡Hola, sube con éxito!"); }}}}} Catch (Exception e) {// cargar E.PrintStackTrace (); jsonObj.put ("RetCode", "9999"); jsonobj.put ("Retmsg", "Hola, Falló la carga de archivo"); } return jsonobj; }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.