Искам да предложа да кача няколко файла, като щракна върху бутона за качване само веднъж. Мога ли да използвам multipart за изпращане на файлове? Ако да, тогава как?
P.S.: Не искам да използвам флаш или да изпращам файл по файл.
Искам да предложа да кача няколко файла, като щракна върху бутона за качване само веднъж. Мога ли да използвам multipart за изпращане на файлове? Ако да, тогава как?
P.S.: Не искам да използвам флаш или да изпращам файл по файл.
Във вашия HTML можете да направите следното:
<input accept="image/jpeg,image/gif,image/png" type="file" name="upload[]" multiple/>
добавянето на multiple
в края на въведеното ви дава това, което искате.
Надявам се това да помогне...
//JSP File
<html>
<head><title>Upload page</title></head></p> <p><body>
<form action="upload_file" method="post" enctype="multipart/form-data" name="form1" id="form1">
<center>
Specify file: <input name="file" type="file" id="file">
Specify file: <input name="file" type="file" id="file">
Specify file:<input name="file" type="file" id="file">
<input type="submit" name="Submit" value="Submit files"/>
<center>
</form>
</body>
</html>
//Servlet Page
import java.util.List;
import java.util.Iterator;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.*;
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
}
else{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
} else {
try {
String itemName = item.getName();
File savedFile = new File(config.getServletContext().getRealPath("/")+"uploadedFiles/"+itemName);
item.write(savedFile);
out.println("<tr><td><b>Your file has been saved at the loaction:</b></td></tr><tr><td><b>"+config.getServletContext().getRealPath("/")+"uploadedFiles"+"\\"+itemName+"</td></tr>");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Да, можеш. Опитайте библиотека за качване на файлове на apache, можете да се обърнете към този въпрос в stackoverflow: Качване на множество файлове в Jsp с помощта на API за качване на общи файлове на Apache или този пълен пример. Също така можете да използвате Spring, като препратите към тази статия.