Пример реализации для SWFUpload, jQuery, JSP, Java и Spring
Первый JSP:
<%@ page language="java" pageEncoding="UTF-8" %>
<head>
<script type="text/javascript" src="<c:url value="/public/js/swfupload/swfupload.js"/>"></script>
<script type="text/javascript" src="<c:url value="/public/js/jquery-plugins/ jquery.swfupload.js"/>"></script>
<script type="text/javascript">
$(function(){
$('.swfupload-control').swfupload({
// Backend Settings
upload_url: "<c:url value="/upload;jsessionid=${pageContext.session.id}"/>", // Relative to the SWF file (or you can use absolute paths)
// Flash Settings
flash_url : "<c:url value="/public/js/swfupload/swfupload.swf"/>",
//IMPORTANT: you need to set file_post_name otherwise flash sets it as Filedata, which does not conform to bean naming conventions.
file_post_name: "file",
// File Upload Settings
file_size_limit : "102400", // 100MB
file_types : "*.*",
file_types_description : "All Files",
file_upload_limit : "10",
file_queue_limit : "0",
// Button Settings
button_image_url : "<c:url value="/public/js/swfupload/XPButtonUploadText_61x22.png"/>", // Relative to the SWF file
button_placeholder_id : "spanButtonPlaceholder",
button_width: 61,
button_height: 22
});
// assign our event handlers
$('.swfupload-control')
.bind('fileQueued', function(event, file){
// start the upload once a file is queued
$(this).swfupload('startUpload');
})
.bind('uploadComplete', function(event, file){
alert('Upload completed - '+file.name+'!');
// start the upload (if more queued) once an upload is complete
$(this).swfupload('startUpload');
});
});
</script>
<head>
<body>
<div id="file_upload"></div>
<div class="swfupload-control">
<span id="spanButtonPlaceholder"></span>
</div>
</body>
Контроллер:
@Controller
public class UploadController {
Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping(value="/upload", method=RequestMethod.POST)
public String addMultiple(
final HttpServletRequest request
, final HttpServletResponse response
, @RequestParam("file") MultipartFile file //NOTE: `@RequestParam("file")` matches `file_post_name: "file"`
){
logger.debug(uploadedFile.getOriginalFilename());
}
}
Также убедитесь, что у вас есть это в ваших конфигах:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
Если вы не используете spring, вы можете использовать HttpServeletRequest как MultiPartRequestWrapper:
File[] files = ((MultiPartRequestWrapper)request).getFiles("Filedata");
Это решение не требует COS (Com O'Reilly Servlet). Вместо этого он просто использует более распространенный javax.servlet.http.HttpServletRequest
Источники (stackoverflow не позволяет мне публиковать ссылки):
- swfupload.org / форум / generaldiscussion / 1087
- demo.swfupload.org / Documentation / # setFilePostName
- blogs.bigfish.tv / адам / 2009/06/14 / SWFUpload-JQuery-плагин /
- webdeveloperplus.com / jquery / загрузка нескольких файлов с помощью индикатора выполнения использования jquery / (более симпатичная реализация загрузчика jquery)