SWFUpload Java版文件上传解决方案
Java 项目里的文件上传要搞得舒服点?SWFUpload的 Java 版还挺值得一试的。虽然是老牌方案,但在多文件上传、大文件断点续传、进度条这些需求面前,它还挺能打的。
多文件上传、进度条显示、断点续传这些功能,SWFUpload一口气都能搞定。用过的都知道,它不光支持预览,还能限制文件类型和大小,前端交互也比较灵活。
Java 后端这边,其实配合也不难。不管你用的是老牌的 Servlet 还是现在常用的 Spring MVC,上传逻辑主要就围绕 MultipartFile
来——拿到文件、存文件、出错返回信息,思路清晰,改起来也方便。
比如前端这段 JS 初始化:
var flashUploader = new SWFUpload({
upload_url: "your/upload/url",
file_post_name: "file",
file_size_limit : "5000 KB",
file_types : "*.jpg;*.png;*.gif",
file_types_description : "Image Files",
button_image_url : "button.png",
button_width : 69,
button_height : 22,
button_text : '选择图片',
button_text_style : '.button { font-size: 16px; }',
onUploadSuccess : function(file, data, response) {
// 上传成功逻辑
},
onUploadError : function(file, errorCode, errorMsg, errorString) {
// 上传失败逻辑
}
});
后端如果是 Spring MVC,写法差不多是这样:
@Controller
public class FileUploadController {
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody String handleFileUpload(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File("upload-dir/" + file.getOriginalFilename())));
stream.write(bytes);
stream.close();
return "文件已上传";
} catch (Exception e) {
return "上传失败: " + e.getMessage();
}
} else {
return "选择文件";
}
}
}
实测下来,表现还不错,响应快、容错强,适合需要搞个“稳上传”的项目场景。如果你用的是老项目、还在兼容 Flash,那配一下试试也不亏。
1.02MB
文件大小:
评论区