控制器(Controller)
普通上传
@ResponseBody
@RequestMapping("fileUp")
public void fileUp(MultipartFile file){
String root_path = ApplicationConstant.fileDisk;
long length = (1024 * 1024 * 5);
String filepath ="";
if( Long.parseLong(size) < length){
String file_path = root_path + File.separator + proname + File.separator + t1;
File newFile = new File(file_path);
if (!newFile.exists()) {
newFile.mkdirs();
}
filepath = UploadUtil.upload(file, file_path);
}
分块上传
@ResponseBody
@RequestMapping("fileUp")
public void fileupload(MultipartFile file){
filepath = UploadUtil.upload(file, file_path + File.separator + name ,count,filename);
if( (Long.parseLong(size)/length) == Integer.parseInt(count) ){
File filelist = new File(file_path + File.separator + name);
File[] list = filelist.listFiles();
try {
String saveFile = newFile + File.separator + t1;
File newFile2 = new File(saveFile);
if (!newFile2.exists()) {
newFile2.mkdirs();
}
RandomAccessFile raf = new RandomAccessFile(saveFile + File.separator + newfilename, "rw");
for(int i = 0; i < list.length; i++){
InputStream reader = new FileInputStream(file_path + File.separator + name+File.separator+ name+"_"+(i)+"."+FilenameUtils.getExtension(filename));
byte[] b = new byte[1024];
int n = 0;
while((n = reader.read(b)) != -1){
raf.write(b, 0, n);
}
reader.close();
}
raf.close();
fileDao.getSession().createSQLQuery("update t_assets_filepath set fileid = '"+t1+"_"+newfilename+"', note = 'new' where note = 'file' and inuse = '1'" ).executeUpdate();
File f =new File(file_path + File.separator+ name);
File[] fs = f.listFiles();
for(int j=0;j<fs.length;j++){
fs[j].delete();
}
f.delete();
} catch (IOException e) {
e.printStackTrace();
}
}
}
js
function Start() {
S_index = 0;
Upload();
}
function Upload() {
var i = loading[0];
var files = document.getElementById("hi_file-"+i).files;
var file = files[0];
var totalSize = file.size;
var blockSize = 1024 * 1024 * 5;
var blockCount = Math.ceil(totalSize / blockSize)-1;
var formData = new FormData();
formData.append('filename', file.name);
formData.append('size', totalSize);
UploadPost(file, formData, totalSize, blockCount, blockSize);
}
function UploadPost(file, formData, totalSize, blockCount, blockSize) {
var foldername = $('#dg_project').treegrid('getSelected').foldername;
var proid = $('#dg_project').treegrid('getSelected').id;
for(var i=1;i>0;i++){
var father = $('#dg_project').treegrid("getParent",proid);
if(father != null){
foldername = father.foldername +"\\"+ foldername;
proid = father.id;
}else{
break;
}
}
var id = loading[0];
if (pause) {
$('#dg_prog-'+id).html('已暂停')
return;
}
try {
var start = S_index * blockSize;
var end = start + blockSize ;
end = Math.min(totalSize,end);
var block = file.slice(start, end);
if(blockSize >= totalSize){
block = file;
}
formData.set('file', block);
formData.set('count', S_index);
formData.set('proname',foldername);
opering =true;
$('#sc_state-'+id).html("上传中。。")
$.ajax({
url: '${baseurl}/intangibleassets/list/uploading',
type: 'post',
data: formData,
processData: false,
contentType: false,
success: function(res) {
block = null;
if (1 == 1) {
var id = loading[0];
var progressBar = document.getElementById("progressBar-"+id);
progressBar.max = totalSize;
progressBar.value = end;
var files = document.getElementById("hi_file-"+id).files;
var file = files[0];
if(totalSize <= blockSize){
$('#percentage-'+id).text(100 + '%');
}else{
$('#percentage-'+id).text((S_index / blockCount * 100).toFixed(2) + '%');
if($('#dg_prog-'+id).length>0){
$('#dg_prog-'+id).html((S_index / blockCount * 100).toFixed(2) + '%')
if(( S_index / blockCount * 100).toFixed(2)>90 ){
closeMinWind = true;
}else{
closeMinWind = false;
}
}
}
if (S_index < blockCount) {
S_index++;
UploadPost(file, formData, totalSize, blockCount, blockSize);
}else{
opering = false;
$('#sc_state-'+id).html("上传成功");
$('#dg_prog-'+id).html('待保存')
fileidList.push({
id : id,
fileid : res
})
loading.splice(0, 1);
if(loading.length>0){
var id2 = loading[0];
var file = document.getElementById("hi_file-"+id2).files[0];
sc(file.size,file.name);
}else{
if(open_coll){
submit();
}
}
}
}
}
});
} catch (e) {
alert(e);
}
}
function Pause() {
pause = true;
}
function Continue() {
pause = false;
Start();
}
function stopORstart(){
var id = loading[0];
if(id == undefined){
return ;
}
var file = document.getElementById("hi_file-"+id).files[0];
var foldername = $('#dg_project').treegrid('getSelected').foldername;
var proid = $('#dg_project').treegrid('getSelected').id;
for(var i=1;i>0;i++){
var father = $('#dg_project').treegrid("getParent",proid);
if(father != null){
foldername = father.foldername +"\\"+ foldername;
proid = father.id;
}else{
break;
}
}
if(pause){
$.ajax({
url: '${baseurl}/intangibleassets/list/fileCount',
data:{'filename': file.name,'proname': foldername},
success: function(count){
pause = false;
$('#sc_state-'+id).html("上传中。。")
S_index = count;
Upload();
}
})
}else{
pause = true;
$('#sc_state-'+id).html("已暂停")
}
}
web
<style type="text/css">
.sc_div {
border: 1px solid #c0ccda;
border-radius:5px 5px 5px 5px;
width: 100%;
height: 70px ;
}
</style>
<div id="p" class="easyui-panel" title="文件上传" style="width: 96%;height: 350px">
<div style="padding: 5px; text-align:left;">
<a href="javascript:void(0)" class="easyui-linkbutton " style="width: 80px; text-align: center;" onclick="addfile()">选择文件</a>
<a id="on-off" href="javascript:void(0)" class="easyui-linkbutton " style="width: 80px; text-align: center;" onclick="stopORstart()">暂停/继续</a>
</div>
<div style="display: none;" id="hi_addfile"></div>
<div id="SC-one" style="width: 100%;height: 270px;overflow: auto;" align="center">
<ul id="ul_file_list" >
</ul>
</div>
</div>
文件上传工具
CSDN-上传工具