保存进度!
This commit is contained in:
		@@ -0,0 +1,80 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: Kane
 | 
			
		||||
 * @Date: 2023-01-22 23:11:26
 | 
			
		||||
 * @LastEditors: Kane
 | 
			
		||||
 * @LastEditTime: 2023-09-25 22:56:49
 | 
			
		||||
 * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/FileUpload/FileUpload.java
 | 
			
		||||
 * @Description: 用于接受上传文件的Controller。
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (c) ${2022} by Kane, All Rights Reserved. 
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package com.cpic.xim.web.controllers.fileupload;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.util.Vector;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import org.springframework.stereotype.Controller;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestParam;
 | 
			
		||||
import org.springframework.web.bind.annotation.ResponseBody;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
@SuppressWarnings( "unused" )
 | 
			
		||||
@Controller
 | 
			
		||||
@RequestMapping( path = "/file" )
 | 
			
		||||
public class FileUpload
 | 
			
		||||
{
 | 
			
		||||
    /*****************************************************
 | 
			
		||||
     * 接收上传文件,并保存到临时目录:
 | 
			
		||||
     * 1、临时目录下再用sessionID作为子目录保存文件。
 | 
			
		||||
     * 2、保存时不更改文件名,会覆盖同名文件。
 | 
			
		||||
     * 3、MultipartFile参数形参名称必须和请求form中file标签的name属性一致,否则值为null。
 | 
			
		||||
     * 4、返回值为接收结果和文件保存路径。
 | 
			
		||||
     *****************************************************/
 | 
			
		||||
    @RequestMapping( path = "/file-upload.do" )
 | 
			
		||||
    @ResponseBody
 | 
			
		||||
    public FileUploadResult getUploadFile( @RequestParam( "task-name" ) String taskName,
 | 
			
		||||
            @RequestParam( "file" ) MultipartFile[] files, HttpServletRequest request )
 | 
			
		||||
    {
 | 
			
		||||
        // session id用来创建临时目录,避免重复
 | 
			
		||||
        String sessionID = request.getSession().getId();
 | 
			
		||||
        FileUploadResult result = new FileUploadResult();
 | 
			
		||||
        Vector<String> fileNames = new Vector<String>();
 | 
			
		||||
        int fileCount = files.length;
 | 
			
		||||
 | 
			
		||||
        // 防御验证
 | 
			
		||||
        if ( files.length == 0 )
 | 
			
		||||
        {
 | 
			
		||||
            result.setSuccess( false );
 | 
			
		||||
            result.setMessage( "此接口用于上传文件!" );
 | 
			
		||||
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        result.setSuccess( true );
 | 
			
		||||
        result.setMessage( "上传成功!" );
 | 
			
		||||
 | 
			
		||||
        for ( MultipartFile file : files )
 | 
			
		||||
        {
 | 
			
		||||
            // 检查文件长度,如果为0则跳过
 | 
			
		||||
            if ( file.isEmpty() )
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // 保存文件到临时目录
 | 
			
		||||
            String filePath =
 | 
			
		||||
                    request.getServletContext().getRealPath( "/temp/upload/" + sessionID );
 | 
			
		||||
            String fileName = file.getOriginalFilename();
 | 
			
		||||
            File destFile = new File( filePath, fileName );
 | 
			
		||||
 | 
			
		||||
            fileNames.add( file.getOriginalFilename() );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        result.setFileList( fileNames );
 | 
			
		||||
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,62 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: Kane
 | 
			
		||||
 * @Date: 2023-01-23 22:56:17
 | 
			
		||||
 * @LastEditors: Kane
 | 
			
		||||
 * @LastEditTime: 2023-09-25 22:57:00
 | 
			
		||||
 * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/FileUpload/FileUploadResult.java
 | 
			
		||||
 * @Description: 
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (c) ${2022} by Kane, All Rights Reserved. 
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package com.cpic.xim.web.controllers.fileupload;
 | 
			
		||||
 | 
			
		||||
import java.util.Vector;
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
			
		||||
 | 
			
		||||
@SuppressWarnings( "unused" )
 | 
			
		||||
public class FileUploadResult
 | 
			
		||||
{
 | 
			
		||||
    public FileUploadResult()
 | 
			
		||||
    {}
 | 
			
		||||
 | 
			
		||||
    public boolean isSuccess()
 | 
			
		||||
    {
 | 
			
		||||
        return success;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSuccess( boolean success )
 | 
			
		||||
    {
 | 
			
		||||
        this.success = success;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getMessage()
 | 
			
		||||
    {
 | 
			
		||||
        return message;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setMessage( String message )
 | 
			
		||||
    {
 | 
			
		||||
        this.message = message;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Vector<String> getFileList()
 | 
			
		||||
    {
 | 
			
		||||
        return fileList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setFileList( Vector<String> fileList )
 | 
			
		||||
    {
 | 
			
		||||
        this.fileList = fileList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @JsonProperty( "success" )
 | 
			
		||||
    private boolean success;
 | 
			
		||||
 | 
			
		||||
    @JsonProperty( "message" )
 | 
			
		||||
    private String message;
 | 
			
		||||
 | 
			
		||||
    @JsonProperty( "file-list" )
 | 
			
		||||
    private Vector<String> fileList;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user