Загрузка файлов очень распространена в веб -приложениях. Теперь я представлю загрузку файлов на основе сервлета. Загрузка файла на основе Struts2 можно просмотреть:
Страница боковой код:
<%@ page language = "java" import = "java.util.*" pageencoding = "gbk"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <Head> regist> </title> </Head> <body> <form = "forc on_submit () "action =" registerservlet "method =" post "enctype =" Multipart /Form-Data "> <input Type =" text "name =" uname1 "id =" пароль " /> <input type =" text "name =" uname2 "id =" uname2 " /> <input type =" password "name =" password = "password" /> < /> "2 name =" password = "password =" 1 password "=" /"2 name". id="password"/> <input type="radio" value="male" checked="checked" name="sex"/> Male<input type="radio" value="female" name="sex"/> Female<input type="text" name="email" value="" id="login" /> <br/><br/> <input type="file" name="file1" id="file"/> <input type="submit" name="submit" value = "Полная регистрация"/> </form> </body> </html>
Здесь следует отметить, что форма формы, загруженная файлом, должна быть enctype = "Multipart/Form-Data"; Здесь мы взаимодействуем непосредственно с фоном без взаимодействия AJAX. Если вам нужно использовать Ajax, вы можете увидеть: http://www.cnblogs.com/shenliang123/category/372520.html
Давайте продолжим рассмотреть внедрение кода Сервлета:
пакет com.xidian.bbs.servlet; импорт java.io.ioexception; import java.io.printwriter; импорт java.net.inetadress; импорт java.sql.connection; импорт java.sql.resultext; import java.sql.statement; import javax.servlet.sersceptex; javax.servlet.http.httpservlet; import javax.servlet.http.httpservlectrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.jsp.jspfactory; import javax.servlet.jsp.pagecontextextextextecter; com.jspsmart.upload.*; import com.xidian.bbs.bean.bean; import com.xidian.bbs.bean.registerbean; import com.xidian.bbs.util.dbaccess; импорт com.xidian.bbs.util.iptimestmp; void doget (httpservletrequest, httpservletresponse response) Throws ServletException, ioException {response.setContentType ("text/html"); response.setcharacterencoding ("GBK"); request.setcharacterencoding ("gbk"); Smartupload Smart = new SmartUpload (); try {// pagecontext-это встроенный объект JSP. Его нельзя использовать непосредственно в сервлете, и необходима некоторая обработка. Jspfactory _jspxfactory = null; PageContext pageContext = null; _jspxfactory = jspfactory.getDefaultFactory (); pagecontext = _jspxfactory.getPageContext (это, запрос, ответ, ", true, 8192, true); Smart.initialize (pagecontext); // Инициализировать операцию загрузки smart.upload (); IpTimeStamp its=new IpTimeStamp(InetAddress.getLocalHost().getHostAddress());//request.getRemoteAddr() gets the user's ip address//System.out.println("The ip is obtained is"+InetAddress.getLocalHost().getHostAddress()); // Если вы хотите реализовать загрузку пакетной загрузки файлов, вам просто нужно использовать для цикла и изменить 0 в getFile (0) на i на строку ext = smart.getFiles (). GetFile (0) .getFileext (); // Это расширение для получения файла, getFile (0) - единственный файл string string string string = its.getiptiMerand ()+". //System.out.println(" Полученное имя файла «+filename); //this.getservletcontext().getRealPath("/ ") Чтобы получить каталог Tomcat, он помещается в папку загрузки. java.io.file.separator - безопасная операция // string realpath = ""; //this.getservletcontext().getRealPath("/")+ smart.getfiles (). getfile (0) .saveas ("/headupload"+java.io.file.separator+файл); String RealPath = "headupload/"+filename+""; // // Поскольку предыдущая форма формы была инкапсулирована, мы не можем просто использовать request.getParameter () для получения строки параметров формы uname1 = smart.getRequest (). GetParameter ("uname1"); // Прозвище string upass1 = smart.getRequest (). GetParameter ("password1"); String sex = smart.getRequest (). GetParameter ("sex"); String uname2 = smart.getRequest (). GetParameter ("uname2"); // string string email = smart.getRequest (). GetParameter ("email"); Printwriter Out = response.getWriter (); // Ниже приведены операции по упорным уровням, опущены. Полем Полем Полем Полем Полем Полем Полем Полем Полем } Защищенный void Dopost (httpservletRequest, httpservletresponse response) throws servletexception, ioexception {Doget (запрос, ответ); }}IPTImestAmp IPTAMP IPTAMP IP+IPTIMESTAM
При загрузке файлов и других операций, чтобы предотвратить конфликтующие имена файлов, мы будем выполнять операции переименования. Вот именование, которое реализует IP+ временные метки:
Я только что загрузил код, нечего сказать, реализация довольно проста, но практичная
пакет com.xidian.bbs.util; import java.text.simpledateformat; import java.util.date; import java.util.random; открытый класс iptimestamp {private simpledateformat sim = null; // используется для получения времени частной строки ip = null; public iptimestamp () {} public iptimestamp (String ip) {this.ip = ip; } public String getiptimerand () {stringBuffer sbf = new StringBuffer (); if (this.ip! = null) {string a [] = this.ip.split ("//"); // разделить IP -адрес в соответствии с точкой, но точка должна быть сбежал для (int i = 0; i <a.length; i ++) {sbf.append (this.addzero (a [i], 3)); // вызов метода нулевого комплекта, и каждый IP с менее чем тремя цифрами автоматически дополняется тремя цифрами} sbf.append (this.getTimeStamp ()); // Использовать это, чтобы вызвать внешний метод случайный случайный = new random (); // Создание случайного числа для (int i = 0; i <3; i ++) {// Создание трехзначного случайного числа sbf.append (random.nextint (10)); // каждое случайное число не превышает 10}} возвращать sbf.tostring (); } @Suppresswarnings ("unared") private String getDate () {// относительно даты и времени this.sim = new SimpleDateFormat ("yyyy-mm-dd hh: mm: sssss"); вернуть this.sim.format (new Date ()); } private String getTimestAmp () {// return timeStamp this.sim = new SimpleDateFormat ("yyyyMmdDhhmmsssss"); вернуть this.sim.format (new Date ()); } private String Addzero (String str, int len) {// Метод автоматического нулевого комплекта, параметры-это указанная строка и длина StringBuffer s = new StringBuffer (); S.Append (str); while (s.length () <len) {s.insert (0, "0"); // Полная операция с нулевым знаком в нулевой позиции} return S.ToString (); } // Проверка публичной статической void main (string [] ary) {iptimestamp iptimestamp = new iptimestamp ("172.168.3.222"); // вызов конструктора с помощью параметров System.out.println (iptimestamp.getiptimerand ()); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.