java檔案上傳到伺服器

ccmedu發表於2019-03-06

java檔案上傳到伺服器

 

最近專案中使用到了檔案從本地到伺服器的功能。其實是為了解決目前瀏覽器不支援獲取本地檔案全路徑。不得已而想到上傳到伺服器的固定目錄,從而方便專案獲取檔案,進而使程式支援EXCEL批量匯入資料。

在前臺介面中
<form method="post" enctype="multipart/form-data"  action="../manage/excelImport.do">
請選檔案:<input type="file"  name="excelFile">
     <input type="submit" value="匯入" onclick="return impExcel();"/>
</form>
 
action中獲取前臺傳來資料並儲存
/**
     * excel 匯入檔案
     * @return
     * @throws IOException
     */
    @RequestMapping("/usermanager/excelImport.do")
    public String excelImport(
            String filePath,
            MultipartFile  excelFile,HttpServletRequest request) throws IOException{
        log.info("<<<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport" );
        if (excelFile != null){
            String filename=excelFile.getOriginalFilename();
            String a=request.getRealPath("u/cms/www/201509");
            SaveFileFromInputStream(excelFile.getInputStream(),request.getRealPath("u/cms/www/201509"),filename);//儲存到伺服器的路徑
        }
        log.info("<<<<<<action:{} Method:{} end>>>>>>","usermanager","excelImport" );
        return "";
    }
     
    /**
     * 將MultipartFile轉化為file並儲存到伺服器上的某地
     */
    public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException
    {      
        FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);
        System.out.println("------------"+path + "/"+ savefile);
        byte[] buffer =new byte[1024*1024];
        int bytesum = 0;
        int byteread = 0;
        while ((byteread=stream.read(buffer))!=-1)
        {
            bytesum+=byteread;
            fs.write(buffer,0,byteread);
            fs.flush();
        }
        fs.close();
        stream.close();
    }

相關文章