跨域上传的简单例子

上传代码的重用性

在springmvc基础上处理上传

上传图片预览

上传jsp页面:

  1. <%@pagelanguage="java"contentType="text/html;charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
  7. <title>Inserttitlehere</title>
  8. <scriptsrc="http://code.jquery.com/jquery-1.10.1.min.js"></script>
  9. <scriptsrc="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
  10. <scriptsrc="js/jquery.Jcrop.min.js"></script>
  11. <linkrel="stylesheet"href="css/jquery.Jcrop.css"type="text/css"/>
  12. <script>
  13. $.uimg={
  14. draw:function(node){
  15. varuimg=$(node);
  16. $.uimg.make_iframe(uimg);
  17. uimg.bind("click.uimg",function(){
  18. varuimg=$(this);
  19. varfile=this.uiframe.contents().find("input[type=file]");
  20. file.bind("change",function(){
  21. $.uimg_node=uimg;
  22. file.parents("form:first").submit();
  23. });
  24. file.click();
  25. });
  26. },
  27. callback:function(status,text,url){
  28. varinput_class=$.uimg_node.attr("uimg");
  29. varinput=null;
  30. if(input_class.indexOf("parent.")==0){
  31. input=$.uimg_node.parent().find(input_class.replace("parent.",""));
  32. }else{
  33. input=$(input_class);
  34. }
  35. input.val(url);
  36. $("#imglink").append("<imgsrc='"+url+"'width='500'height='200'/>");
  37. $("#user_preview_img").attr("src",url);
  38. $("#user_preview_img").css("display","block");
  39. //$("a#piclink").attr("href",url);
  40. //window.parent.alertMsg.correct('上传成功');
  41. ////jcrop头像裁剪
  42. //恢复form
  43. $.uimg.make_iframe($.uimg_node);
  44. },
  45. make_iframe:function(uimg){
  46. try{$(uimg)[0].uiframe.remove();}catch(e){}
  47. varurl="http://localhost:8080/springmvc/uimg/xuan?callback=parent.jQuery.uimg.callback";
  48. variframe=$("<iframeclass='uimg_iframe'style='display:none'></iframe>");
  49. iframe.attr("src",url);
  50. iframe.attr("frameborder",0);
  51. //iframe.attr("width",0);
  52. //iframe.attr("height",0);
  53. $(top.document.body).append(iframe);
  54. $(uimg)[0].uiframe=iframe;
  55. }
  56. }
  57. $.fn.uimg=function(){
  58. $.uimg.draw(this);
  59. }
  60. </script>
  61. <script>
  62. setTimeout(function(){
  63. $("input[name=tg_position]").each(function(){
  64. if($(this).val()=="$!tg_position"){
  65. $(this).attr("checked","1");
  66. }
  67. });
  68. vartg_content="$!tg_content";
  69. tg_content_type=tg_content.substring(0,tg_content.indexOf(":"));
  70. tg_content_txt=tg_content.substring(tg_content.indexOf(":")+1);
  71. $("input[name=tg_content_type][value="+tg_content_type+"]").attr("checked","1");
  72. $("input[name=tg_content_txt]").val(tg_content_txt);
  73. $("input[uimg]").uimg();
  74. },50);
  75. functioninit_tg_content(o){
  76. vartype=$(o).find("input[name=tg_content_type]:checked").val();
  77. vartxt=$(o).find("input[name=tg_content_txt]").val();
  78. $(o).find("input[name=tg_content]").val(type+":"+txt);
  79. returntrue;
  80. }
  81. </script>
  82. </head>
  83. <body>
  84. <p>上传演示</p>
  85. <formonSubmit="returninit_tg_content(this)&&iframeCallback(this);"action="#"method="post"style="padding:10px;">
  86. <pstyle="padding:3px0">
  87. <label>显示内容:</label>
  88. <imgsrc=""id="user_preview_img"/>
  89. <inputtype="text"value="$!{tg_content_txt}"name="tg_content_txt"style="width:120px"/>
  90. <inputtype="button"value="上传图片"uimg="parent.input[name=tg_content_txt]"/>
  91. </p>
  92. <p>
  93. <inputtype="hidden"size="4"id="x1"name="x1"/>
  94. <inputtype="hidden"size="4"id="y1"name="y1"/>
  95. <inputtype="hidden"size="4"id="x2"name="x2"/>
  96. <inputtype="hidden"size="4"id="y2"name="y2"/>
  97. <inputtype="hidden"size="4"id="w"name="w"/>
  98. <inputtype="hidden"size="4"id="h"name="h"/>
  99. </p>
  100. <inputtype="submit"value="提交"/>
  101. </form>
  102. </body>
  103. </html>


iframe引用的上传页面:

  1. <%@pagelanguage="java"contentType="text/html;charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
  7. <title>Inserttitlehere</title>
  8. </head>
  9. <body>
  10. <formaction="upload/file"method="post"enctype="multipart/form-data">
  11. <inputtype="file"name="file"/>
  12. <inputtype="submit"value="上传"/>
  13. </form>
  14. </body>
  15. </html>



上传java类:
  1. packagecom.app.controller;
  2. importjava.awt.Graphics;
  3. importjava.awt.Image;
  4. importjava.awt.Toolkit;
  5. importjava.awt.image.BufferedImage;
  6. importjava.awt.image.CropImageFilter;
  7. importjava.awt.image.FilteredImageSource;
  8. importjava.awt.image.ImageFilter;
  9. importjava.io.File;
  10. importjava.io.IOException;
  11. importjava.io.InputStream;
  12. importjava.io.OutputStream;
  13. importjava.io.PrintWriter;
  14. importjavax.imageio.ImageIO;
  15. importjavax.servlet.http.HttpServletRequest;
  16. importjavax.servlet.http.HttpServletResponse;
  17. importorg.apache.commons.io.FilenameUtils;
  18. importorg.springframework.stereotype.Controller;
  19. importorg.springframework.ui.ModelMap;
  20. importorg.springframework.web.bind.annotation.RequestMapping;
  21. importorg.springframework.web.bind.annotation.RequestMethod;
  22. importorg.springframework.web.bind.annotation.RequestParam;
  23. importorg.springframework.web.bind.annotation.ResponseBody;
  24. importorg.springframework.web.multipart.MultipartFile;
  25. importorg.springframework.web.multipart.MultipartHttpServletRequest;
  26. importorg.springframework.web.servlet.ModelAndView;
  27. @Controller
  28. publicclassUploadFilecontroller{
  29. @RequestMapping(value="/uimg/xuan",method={RequestMethod.GET,RequestMethod.POST})
  30. publicModelAndViewuploadimages(HttpServletRequestrequest,HttpServletResponseresponse){
  31. ModelAndViewmav=newModelAndView();
  32. System.out.println("00000000");
  33. Stringcallback=request.getParameter("callback");
  34. System.out.println("----"+callback);
  35. mav.addObject("callback",callback);
  36. mav.setViewName("/upload/uploadImages");
  37. returnmav;
  38. }
  39. @RequestMapping(value="/upload/file",method={RequestMethod.GET,RequestMethod.POST})
  40. publicStringuploadImages(@RequestParam(value="file",required=false)MultipartFilefile,
  41. HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{
  42. response.setContentType("text/html,charset=UTF-8");
  43. PrintWriterout=response.getWriter();
  44. ModelAndViewmav=newModelAndView();
  45. Stringpath=request.getSession().getServletContext().getRealPath("images/uploadImages");
  46. StringfileName=file.getOriginalFilename();
  47. //StringfileName=newDate().getTime()+".jpg";
  48. System.out.println(path);
  49. FiletargetFile=newFile(path,fileName);
  50. if(!targetFile.exists()){
  51. targetFile.mkdirs();
  52. }
  53. //锟斤拷锟斤拷
  54. try{
  55. file.transferTo(targetFile);
  56. }catch(Exceptione){
  57. e.printStackTrace();
  58. }
  59. //model.addAttribute("fileUrl",request.getContextPath()+"/uploadImages/"+fileName);
  60. StringurlString=request.getContextPath()+"/images/uploadImages/"+fileName;
  61. mav.addObject("fileUrl",request.getContextPath()+"/images/uploadImages/"+fileName);
  62. mav.setViewName("/upload/uploadSuccess");
  63. System.out.println("==="+urlString);
  64. Stringcallback=request.getParameter("callback");
  65. System.out.println("-+++---"+callback);
  66. StringBuildersb=newStringBuilder();
  67. sb.append("<script>parent.jQuery.uimg.callback(true,'','http://localhost:8080"+urlString+"');</script>");
  68. out.print(sb);
  69. returnnull;
  70. }
  71. }

上传页面效果图:

跨域上传的简单例子

上传成功预览:

跨域上传的简单例子