file.getOriginalFilename()メソッドはブラウザによって出力が異なります

10596 ワード

今日は画像のアップロードを学ぶときにこの方法を使いました.画像のアドレスを取得して保存するなどの操作を目的としていましたが、最初はIEブラウザを使っていましたが、エラーは見つかりませんでした.その後、火狐とグーグルブラウザでテストしたところ、エラーが見つかりました.最後にやっとこの関数の問題がIEブラウザの下で出力されたのはディスク付きのアドレスであることを発見しました.例えば、E://Img/1.pngですが、グーグルと火狐ブラウザの下で出力されたのは1.pngです.他の360ブラウザはテストしていません.
考えてみれば、一番簡単な解決策は、自分でもう一つのフォルダを作って、画像を中に保存して、アクセスする操作です.
            @RequestMapping("/receive")
			@ResponseBody
			public Map<String, Object> receive(MultipartFile file) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException {
				String aString = file.getOriginalFilename();//aa.png
			    // D   uploadimg        
				Properties properties = PropertiesLoaderUtils.loadAllProperties("upload.properties");
				String pathString =properties.getProperty("minio.saveimg");
			    File file1 = new File(pathString);
			    if (!file1.isDirectory()) {
					file1.mkdir();
				}else {
					logger.info("       ");
				}
			    String pngString = pathString+UserName+".png";
			    File file2 = new File(pngString);
			    file.transferTo(file2);
			    try {
				  	String url = properties.getProperty("minio.url");
				  	String user = properties.getProperty("minio.user");
				  	String password = properties.getProperty("minio.password");
				  	String bucketname = properties.getProperty("minio.imgbucketname");
				  	String filepath = properties.getProperty("minio.imgfilepath");
			        //    :  ,  ,  
				  	MinioClient minioClient = new MinioClient(url, user, password);

				    //            
				    boolean isExist = minioClient.bucketExists("managertest");
				    if(isExist) {
				    	logger.info("      ");
				    } 
				    else {
				        //       managertest    
				    	logger.info("      ");
				    	minioClient.makeBucket("managertest");
				    }
				    //   putObject           。
				    //   :   ,      ,     
				    minioClient.putObject("managertest","merchent/"+UserName+".png", pngString);
				    logger.info("   ");
			    } catch(MinioException e) {
			    	System.out.println("  : " + e);
			    }
				Map<String, Object> map = new HashMap<String, Object>();
				map.put("result", true);
				return map;
			}