谷歌浏览器上传文件失败,显示插件_fakepath路径解决

(4) 2024-05-22 21:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说谷歌浏览器上传文件失败,显示插件_fakepath路径解决,希望能够帮助你!!!。

    前段时间在实现一个文件上传功能时发现谷歌等主流浏览器会出于安全考虑将上传文件的地址换为fakepath。比如c盘的某个文件,无论其原先处于哪个文件之下。在上传之后其会自动变为C\fakepath\文件名字。

  解决方案如下:

前台form表单提交文件

<form name="Form2" action="/Import/ImportExcel" method="post"  enctype="multipart/form-data">

                        <input type="file" name="file">
                        <input type="submit" value="upload"/>
                    </form>

后台controller层获取文件并将其上传至E盘,文件名转换成时间戳以便区分

@Controller
@RequestMapping("Import")

public class ReadExcelController {
    @Autowired
    private EmployeeService EmployeeService;
    /**
     *
     * @Description: 导入Excel文件
     * @return
     */
    @RequestMapping("ImportExcel" )
    @ResponseBody
    public boolean readExcel(@RequestParam("file") CommonsMultipartFile file) throws IOException {
        ImportExcelUtil importExcelUtil = new ImportExcelUtil();
        String path="E:/"+new Date().getTime()+file.getOriginalFilename();

        File newFile=new File(path);
        file.transferTo(newFile);

        List<Map<String,String>> list = importExcelUtil.readExcel(newFile);
        List<Map<String,Object>> busiID = EmployeeService.quarryBusiId();
        Map<Object,Object> map=new HashMap<>();
        for(int j=0;j<busiID.size();j++){
            map.put(busiID.get(j).get("busi_id"),1);
        }
        List<Employee> employeeList =new ArrayList<>();
        for(int i = 0;i<list.size();i++){
            Employee employee = new Employee();

            if(list.get(i).get("cell13") == null || "".equals(employee.getBusiId())){
                continue;
            }
            if (map.get(list.get(i).get("cell13")) != null){
                continue;
            }
            employee.setBusiId(list.get(i).get("cell13"));
            employee.setEmpId(list.get(i).get("cell1"));
            employee.setEmpName(list.get(i).get("cell2"));
            employee.setClassName(list.get(i).get("cell4")+list.get(i).get("cell3"));
            employee.setDeptName(list.get(i).get("cell4"));
            employee.setTranType(list.get(i).get("cell6"));
            employee.setTranName(list.get(i).get("cell7"));
            employee.setPostClass(list.get(i).get("cell8"));
            employee.setPostName(list.get(i).get("cell9"));
            employeeList.add(employee);
        }

        for(int i=0;i<employeeList.size();i++){
         EmployeeService.insert(employeeList.get(i));
        }

            return true;


    }
}

也就是说绕过文件的原地址,直接将文件上传到一个固定的地址以便调用。当然这只是测试方法,后期可以直接上次到服务器。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复