ここでファイルをアップロードし、エディタでメインスピーカーをエコー
1.インポートし、対応するjarファイルのパッケージ
<! - タイム・オペレーティング・コンポーネント - > <依存> <groupIdを>ジョダ-時間</ groupIdを> <たartifactId>ジョダ-時間</たartifactId> <バージョン> 2.5 </バージョン> </依存関係> <! - Apacheのツールコンポーネント - > <依存> <groupIdを> org.apache.commons </ groupIdを> <たartifactId>コモンズ-lang3 </たartifactId> <バージョン> 3.3.2 </バージョン> </依存関係> <依存> <groupIdを> org.apache.commons </ groupIdを> <たartifactId>コモンズ-IO </たartifactId> <バージョン> 1.3.2 </バージョン> </依存関係> <! - 依存の写真をアップロード - > <依存> <groupIdを>コモンズ-ファイルアップロード</ groupIdを> <たartifactId>コモンズ-ファイルアップロード</たartifactId> <バージョン> 1.3.2 </バージョン> </依存関係>
2. [設定springMVCプロフィール
<! - ファイルアップロードパーサ - >
<ビーンID = "multipartResolver" クラス = "org.springframework.web.multipart.commons.CommonsMultipartResolver">
<プロパティ名= "maxUploadSize" 値= "20971520" />
</豆>
3.beanツール
パッケージcom.taotao.common.bean。 パブリック クラスPicUploadResult { プライベート整数エラー; // ファイル形式をアップロード裁判官は正しいです プライベート文字列のURL; // 表示する画像ファイルのパス プライベート文字列の幅。 プライベート文字列の高さ。 パブリック整数getError(){ 戻りエラー; } 公共 ボイドSETERROR(整数エラー){ この .ERROR = エラー。 } 公共の文字列のgetURL(){ リターンURL; } 公共 のボイドてsetURL(文字列のURL){ このする.url = URL; } パブリック文字列のgetWidth(){ 戻り幅。 } 公共 ボイドにsetWidth(文字幅){ この .width = 幅。 } パブリック文字列のgetHeight(){ 戻り高さ; } 公共 ボイドsetHeightメソッド(文字列の高さ){ この .height = 高; } }
特定のアプリケーション層4.controller
パッケージcom.taotao.manage.controller。 輸入java.awt.image.BufferedImage。 インポートのjava.io.File; インポートにjava.io.IOException; 輸入java.util.Date; 輸入javax.imageio.ImageIO; インポートのjavax.servlet.http.HttpServletResponse; 輸入org.apache.commons.lang3.RandomUtils。 輸入org.apache.commons.lang3.StringUtils。 輸入org.joda.time.DateTime。 輸入org.slf4j.Logger。 輸入org.slf4j.LoggerFactory; 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.http.MediaType。 輸入org.springframework.stereotype.Controller。 輸入org.springframework.web.bind.annotation.RequestMapping。 輸入org.springframework.web.bind.annotation.RequestMethod; 輸入org.springframework.web.bind.annotation.RequestParam。 インポートorg.springframework.web.bind.annotation.ResponseBody; 輸入org.springframework.web.multipart.MultipartFile。 輸入com.fasterxml.jackson.databind.ObjectMapper。 輸入com.taotao.common.bean.PicUploadResult。 輸入com.taotao.manage.service.PropertiesService。 / ** *画像のアップロードに依存するJARパッケージ1は、プロファイル2.構成ファイルアップロードコントロール層3リゾルバに導入され、 * / @コントローラ @RequestMapping( "/ PIC" ) パブリック クラスPicUploadController { プライベート 静的 最終ロガーLOGGER = LoggerFactory.getLogger(PicUploadController。クラス); @Autowired プライベートPropertiesService propertiesService。
プライベート 静的 最終 ObjectMapperマッパー= 新しいObjectMapper(); // 形式アップロードさせ プライベート 静的 最終列[] = IMAGE_TYPE 新しい新しい文字列[] { ".BMP"、 ".JPG"、 ".JPEG"、 ".GIF"、 ".PNG"を}。 @RequestMapping(値 = "/アップロード"、メソッド= RequestMethod.POST) @ResponseBody パブリック文字列アップロード(@RequestParam( "uploadFile")MultipartFile uploadFile、HttpServletResponseの応答)がスロー例外{ // チェック画像フォーマット ブール isLegal = falseに、 用(文字列型:IMAGE_TYPE){ IF (StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename()、タイプ)){ isLegal = 真; 破ります; } } // パッケージ結果オブジェクト、およびファイルは、バイト配列オブジェクト結果の中に配置され PicUploadResult fileUploadResult = 新しい新しいPicUploadResult()。 // 状态 fileUploadResult.setError(isLegal 0:?1 )。 // ファイルを新しいパス 文字列filePathに= GetFilePath(uploadFile.getOriginalFilename()); もし(LOGGER.isDebugEnabled()){ LOGGER.debug( "プリ画像ファイルのアップロード[{}]に[{}]。。" 、uploadFile.getOriginalFilename()ファイルパス)。 } // 。私は絶対参照は、構成画像サーバの設定ngnixに対処していないため、画像を生成した 文字列picUrl = StringUtils.replace(StringUtils.substringAfter(filePathに、propertiesService.IMAGE_REPOSITORY)は、 "\\"、 "/" ); fileUploadResult.setUrl(propertiesService.IMAGE_URL + picUrl)。 newFileファイル = 新しいファイル(filePathに); // ディスクへのファイル書き込み uploadFile.transferTo(にnewFile)を、 // 画像の合法性を確認する isLegal =が偽; 試して{ バッファ画像イメージ = ImageIO.read(にnewFile)。 もし(画像!= nullの){ fileUploadResult.setWidth(image.getWidth() + "" ); fileUploadResult.setHeight(image.getHeight() + "" ); isLegal = 真; } } キャッチ(IOExceptionを電子){ } // 状态 fileUploadResult.setError(isLegal 0:?1 )。 IF(!isLegal){ // 違法は、ディスク上のファイルを削除します )(newFile.delete。 } response.setContentType(MediaType.TEXT_HTML_VALUE)。 返すmapper.writeValueAsString(fileUploadResultを)。 } プライベート文字列getFilePath(文字列でSourceFileName){ 文字列baseFolder = propertiesService.IMAGE_REPOSITORY + File.separator + "画像" ; 日付nowDate = 新しい日付(); // YYYY / MM / DD 文字列fileFolder = baseFolder + File.separator + 新しい日時(nowDate).toString( "YYYY")+ File.separator + 新しい日時(nowDate).toString( "MM")+ File.separator + 新しい日時(nowDate).toString( "DD" ); ファイルファイル = 新しい新しいファイル(fileFolder); IF(!File.isDirectory()){ // ディレクトリが存在しない場合は、ディレクトリの作成 file.mkdirsを(); } // 生成新的文件名 のString fileNameに= 新しい日時(nowDate).toString( "yyyyMMddhhmmssSSSS")+ RandomUtils.nextInt(100、9999)+ "" + StringUtils.substringAfterLast(SourceFileNameは、 "" )。 返す fileFolder + File.separator + ファイル名を。 } }
上記組み込まれたアプリケーション層制御装置内の2つの方法で属性ファイル
プロパティファイルenv.properties
image_repository = D:\\ bigdata6 \\ taotao- アップロード IMAGE_URL =のhttp:// image.taotao.com
プロファイルapplicationContext.xmlをバネにおける属性ファイルに導入
<! - プロパティファイルの紹介 - > <コンテキスト:プロパティプレースホルダ位置=「クラスパス:*プロパティ」/>
最初の
サービス層に設立さPropertiesService.java
パッケージcom.taotao.manage.service。 輸入org.springframework.beans.factory.annotation.Value。 輸入org.springframework.stereotype.Service。 @サービス パブリック クラスPropertiesService { @value(「image_repository $ {}」)// プロパティファイルの値を読み取る パブリック文字列IMAGE_REPOSITORYと、 @value(「IMAGE_URLの$ {}」)// プロパティファイルの値を読み取る パブリック文字列IMAGE_URLと、 }
レイヤーは、コントローラに追加されました
@Autowired
プライベート PropertiesService propertiesService。
第2
まずspringMVCプロファイルを追加しました
<! - プロパティファイルの紹介 - > <コンテキスト:プロパティプレースホルダ位置= "クラスパス:env.properties" />
レイヤーは、コントローラに追加されました
@value(「image_repository $ {}」)// プロパティファイルの値を読み取る パブリック文字列IMAGE_REPOSITORYと、 @value(「IMAGE_URLの$ {}」)// プロパティファイルの値を読み取る パブリック文字列IMAGE_URLと、