Struts2接收formData类型的ajax文件上传,属性可以传过去,文件就报错。

发布于 2022-09-05 10:37:52 字数 4121 浏览 34 评论 0

接收文件就报错
图片描述

接收普通属性没有问题

clipboard.png

clipboard.png

报错:

clipboard.png

public String save_category() {

        System.out.println("name:" + category.getCategory_name());
        System.out.println("rank:" + category.getCategory_rank());
        System.out.println("show:" + category.getCategory_show());
        System.out.println("news:" + category.getCategory_news());
        System.out.println("father:" + category.getCategory_father());

        /*
         * 
         */
        // http_response.setCharacterEncoding("utf-8");
        // 1、创建一个DiskFileItemFactory工厂
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        // 2、创建一个文件上传解析器
        ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
        // 解决上传文件名的中文乱码
        // servletFileUpload.setHeaderEncoding("UTF-8");
        System.out.println("asdqqqqqasdasds");
        try {
            // 1. 得到 FileItem 的集合 items
            List<FileItem> list_fileItems = servletFileUpload.parseRequest(http_request);

            // 2. 遍历 items:
            for (FileItem fileItem : list_fileItems) {
                // 若是一个一般的表单域, 打印信息
                if (fileItem.isFormField()) {
                    System.out.println(fileItem.getFieldName());
                    switch (fileItem.getFieldName()) {
                    case "category.category_name": {
                        break;
                    }
                    }
                    System.out.println(fileItem.getFieldName() + ": " + fileItem.getString("utf-8"));
                }
                // 若是文件域
                else {

                    String fileName = fileItem.getName();
                    long sizeInBytes = fileItem.getSize();
                    System.out.println("原文件名fileName:" + fileName);
                    System.out.println("sizeInBytes:" + sizeInBytes);

                    if (sizeInBytes != 0) {

                        String[] fileNameArray = fileName.split("\\.");

                        System.out.println("fileNameArray.length:" + fileNameArray.length);
                        System.out.println("fileNameArray[0]:" + fileNameArray[0]);
                        System.out.println("fileNameArray[1]:" + fileNameArray[1]);

                        category.setCategory_img(uuid.getUuid() + "." + fileNameArray[1]);
                        System.out.println("改名后post_img:" + category.getCategory_img());

                        InputStream inputStream = fileItem.getInputStream();
                        byte[] buffer = new byte[1024];
                        int lenth = 0;

                        String filePath = "F:\\xxyjsjgcxy_img\\snews_category\\" + category.getCategory_img();// 文件最终上传的位置
                        System.out.println(filePath);
                        OutputStream outputStream = new FileOutputStream(filePath);

                        while ((lenth = inputStream.read(buffer)) != -1) {
                            outputStream.write(buffer, 0, lenth);
                        }

                        outputStream.close();
                        inputStream.close();

                    } else {
                        category.setCategory_img(null);
                    }

                }
            }

        } catch (Exception e) {
            e.printStackTrace();

        }

        /*
         * 处理其他数据
         */
        // page = "page_list_category";
        // ActionContext.getContext().getValueStack().push(page);
        return "save_category";

    }

调试一下午无果,望各位指点一二

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

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

发布评论

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

评论(1

我也只是我 2022-09-12 10:37:53

formData.append("uploadfile",$("#fileInputID")[0].files[0]);
不知道是不是你这边js的问题额,可以看看

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