解決Google瀏覽器檔案上傳fakepath問題,

來源:互聯網
上載者:User

解決Google瀏覽器檔案上傳fakepath問題,

    前段時間在實現一個檔案上傳功能時發現Google等主流瀏覽器會出於安全考慮將上傳檔案的地址換為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;    }}

也就是說繞過檔案的原地址,直接將檔案上傳到一個固定的地址以便調用。當然這隻是測試方法,後期可以直接上次到伺服器。

查看評論

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.