struts2中文件上传 不能更换上传的文件

发布于 2022-09-06 22:30:36 字数 3753 浏览 12 评论 0

使用strust2上传文件遇到这样的问题:
html部分代码如下:

<body>
    <input type="file" name="file"><br>
    <input type="text" name="author">
    <input type="button" name="submit" value="提交">
    <div id="message"></div>
<script src="jquery-3.1.1.min.js"></script>
<script>
$(function(){
    var formData = new FormData();
    formData.append("author",$("input[name='author']").val());
    formData.append("file",$("input[name='file']")[0].files[0]);
    $("input[name='submit']").click(function(){
        $.ajax({
            url:'uploadfiles',
            type:'post',
            data:formData,
            processData:false,
            contentType:false,
            success:function(data){
                $("#message").html(data);
            }
        })
    })
});
</script>
</body>

后台java代码:

public class UploadAction extends ActionSupport{
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public File getFile() {
        return file;
    }
    public void setFile(File file) {
        this.file = file;
    }
    public String getFileContentType() {
        return fileContentType;
    }
    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }
    public String getFileFileName() {
        return fileFileName;
    }
    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }
    private static final long serialVersionUID = 1L;
    
    private File file; //得到上传的文件
    private String fileContentType; //得到文件的类型
    private String fileFileName; //得到文件的名称
    private String author;//上传者信息
    
    public String upload(){
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        System.out.println("文件名:"+this.getFileFileName());
        System.out.println("文件类型:"+this.getFileContentType());
        System.out.println("文件:"+this.getFile());
        System.out.println("上传者:"+this.getAuthor());
        
        String realPath=ServletActionContext.getServletContext().getRealPath("/upload");
        File file_dest = new File(realPath);
        
        if(!file_dest.exists()) file_dest.mkdir();
        
        try {
//            FileUtils.copyFile(file, new File(file_dest,fileFileName));
            FileInputStream is = new FileInputStream(file);
            FileOutputStream fos = new FileOutputStream(realPath+"/"+fileFileName);
            byte[] buf = new byte[1024*1024];
            int len = 0;
            while((len = is.read(buf))!=-1){
                fos.write(buf,0,len);
            }
            is.close();
            fos.close();
            response.getWriter().write(fileFileName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return NONE;
    }
}

第一次上传文件,能够成功:

图片描述图片描述

如果我不想上传这个文件,或者上传这个文件之后,选择其它文件再次上传时,总是上传第一次的文件,而不上传新选择的文件
图片描述图片描述

不知道为什么会出现这样的问题,百度了好久都没人遇到这种情况 ==希望大神帮我看看这是为什么 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晨与橙与城 2022-09-13 22:30:36

试试把formdata放function里

$(function(){
    $("input[name='submit']").click(function(){
        var formData = new FormData();
        formData.append("author",$("input[name='author']").val());
        formData.append("file",$("input[name='file']")[0].files[0]);
        $.ajax({
            url:'uploadfiles',
            type:'post',
            data:formData,
            processData:false,
            contentType:false,
            success:function(data){
                $("#message").html(data);
            }
        })
    })
});
静谧幽蓝 2022-09-13 22:30:36

用开发者工具看看请求Request Payload

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文