ajax异步上传图片webservice转存图片服务器

2024-01-28 10:48

本文主要是介绍ajax异步上传图片webservice转存图片服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目源代码及相关jar包:https://github.com/smallbug-vip/repo/tree/master/code/web/back  

一、搭建SpringMVC环境  

    因为现在主要讨论ajax异步上传图片到图片服务器,所以配置SpringMVC环境就简略介绍一下了,更具体步骤可以Google或者直接从链接下载源码。如果不做修改直接运行源码时需要注意,该源码已经链接数据库了,所以在配置文件中需要修改jdbc.properties修改数据库链接参数。否则无法启动。 

配置web.xml 
Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  5.     id="WebApp_ID" version="2.5">  
  6.     <display-name>back</display-name>  
  7.   
  8.     <context-param>  
  9.         <param-name>contextConfigLocation</param-name>  
  10.         <param-value>classpath:application-context.xml</param-value>  
  11.     </context-param>  
  12.     <!-- spring的监听器 -->  
  13.     <listener>  
  14.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  15.     </listener>  
  16.   
  17.     <!-- 中文过滤器 -->  
  18.     <filter>  
  19.         <filter-name>encoding</filter-name>  
  20.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  21.         <init-param>  
  22.             <param-name>encoding</param-name>  
  23.             <param-value>UTF-8</param-value>  
  24.         </init-param>  
  25.     </filter>  
  26.   
  27.     <filter-mapping>  
  28.         <filter-name>encoding</filter-name>  
  29.         <url-pattern>*.do</url-pattern>  
  30.     </filter-mapping>  
  31.   
  32.     <filter-mapping>  
  33.         <filter-name>encoding</filter-name>  
  34.         <url-pattern>*.shtml</url-pattern>  
  35.     </filter-mapping>  
  36.   
  37.     <!-- springmvc 配置 前台 -->  
  38.     <servlet>  
  39.         <servlet-name>front</servlet-name>  
  40.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  41.         <init-param>  
  42.             <param-name>contextConfigLocation</param-name>  
  43.             <param-value>classpath:springmvc-front.xml</param-value>  
  44.         </init-param>  
  45.     </servlet>  
  46.     <servlet-mapping>  
  47.         <servlet-name>front</servlet-name>  
  48.         <url-pattern>*.shtml</url-pattern>  
  49.     </servlet-mapping>  
  50.   
  51.     <!-- springmvc 配置 后台 -->  
  52.     <servlet>  
  53.         <servlet-name>back</servlet-name>  
  54.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  55.         <init-param>  
  56.             <param-name>contextConfigLocation</param-name>  
  57.             <param-value>classpath:springmvc-back.xml</param-value>  
  58.         </init-param>  
  59.     </servlet>  
  60.     <servlet-mapping>  
  61.         <servlet-name>back</servlet-name>  
  62.         <url-pattern>*.do</url-pattern>  
  63.     </servlet-mapping>  
  64.   
  65.     <welcome-file-list>  
  66.         <welcome-file>index.html</welcome-file>  
  67.         <welcome-file>index.htm</welcome-file>  
  68.         <welcome-file>index.jsp</welcome-file>  
  69.     </welcome-file-list>  
  70.   
  71. </web-app>  


配置pom.xml 

    文件地址: https://github.com/smallbug-vip/repo/blob/master/code/web/back/pom.xml  

配置springmvc-back.xml 

Xml代码   收藏代码
  1. <!-- springmvc 扫包 @Controller @Service ..... -->  
  2.     <context:component-scan base-package="cn.smallbug"  
  3.         use-default-filters="false">  
  4.         <context:include-filter type="annotation"  
  5.             expression="org.springframework.stereotype.Controller" />  
  6.     </context:component-scan>  
  7. <!-- jsp视图 -->  
  8.     <bean id="jspViewResolver"  
  9.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  10.         <property name="prefix" value="/" />  
  11.         <property name="suffix" value=".jsp" />  
  12.     </bean>  


二、配置XML使SpringMVC可以上传图片  

在springmvc-back.xml文件中添加: 

Xml代码   收藏代码
  1. <!-- 文件上传 -->  
  2. <bean id="multipartResolver"  
  3.     class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  4.     <property name="defaultEncoding" value="UTF-8"></property>  
  5.     <!-- <property name="maxUploadSize" value="2348000"></property> -->  
  6. </bean>  


三、编写接收文件的Controller  

Java代码   收藏代码
  1. package cn.smallbug.core.controller;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.UUID;  
  5.   
  6. import javax.servlet.http.HttpServletResponse;  
  7.   
  8. import org.apache.commons.io.FilenameUtils;  
  9. import org.json.JSONObject;  
  10. import org.springframework.stereotype.Controller;  
  11. import org.springframework.web.bind.annotation.RequestMapping;  
  12. import org.springframework.web.bind.annotation.RequestParam;  
  13. import org.springframework.web.multipart.MultipartFile;  
  14.   
  15. import com.sun.jersey.api.client.Client;  
  16. import com.sun.jersey.api.client.WebResource;  
  17.   
  18. @Controller  
  19. public class UploadImage {  
  20.   
  21.     @RequestMapping(value = "/upload/uploadImage.do")  
  22.     public void uploadImage(@RequestParam(required = false) MultipartFile pic, HttpServletResponse response) {  
  23.   
  24.         String ext = FilenameUtils.getExtension(pic.getOriginalFilename());  
  25.         String uuid = UUID.randomUUID().toString();  
  26.         String newFileName = uuid + "." + ext;  
  27.   
  28.         // 实例化jersey  
  29.         Client client = new Client();// --->  
  30.   
  31.         // 另一台服务器的请求路径  
  32.         String url = "http://192.168.88.131:8080/back/upload/" + newFileName;  
  33.   
  34.         // 设置请求路径  
  35.         WebResource resource = client.resource(url);  
  36.   
  37.         // 发送  
  38.         try {  
  39.             resource.put(String.class, pic.getBytes());  
  40.         } catch (IOException e) {  
  41.             throw new RuntimeException(e);  
  42.         }  
  43.   
  44.         // 将url格式化成json串  
  45.         JSONObject jo = new JSONObject();  
  46.         jo.put("url", url);  
  47.   
  48.         // 发送  
  49.         try {  
  50.             response.setContentType("application/json;charset=UTF-8");  
  51.             // response.setContentType("text/xml;charset=UTF-8");  
  52.             // response.setContentType("text/plain;charset=UTF-8");  
  53.             response.getWriter().write(jo.toString());  
  54.         } catch (IOException e) {  
  55.             throw new RuntimeException(e);  
  56.         }  
  57.     }  
  58. }  

四、导入js库,编写jsp  

 

上传文件需要用到jquery.js和到jquery.form.js 

编写表单和图片显示域: 

Xml代码   收藏代码
  1. <body>  
  2.   
  3.     <form id="sentImage" action="${pageContext.request.contextPath }/upload/uploadImage.do" method="post"  
  4.         enctype="multipart/form-data">  
  5.         <input type="file" onchange="uploadPic()" name="pic" />  
  6.     </form>  
  7.     <div id="20160202852"></div>  
  8. </body>  


当选择图片之后会触发uploadPic()函数,开始上传图片: 
Java代码   收藏代码
  1. function uploadPic() {  
  2.         //定义参数  
  3.         var options = {  
  4.             url : "${pageContext.request.contextPath }/upload/uploadImage.do",  
  5.             dataType : "json",  
  6.             type : "post",  
  7.             //上传成功后回调函数  
  8.             success : function(data) {  
  9.                 var img = $("<img />");  
  10.                 img.attr("src",data.url);  
  11.                 $("#20160202852").append(img);  
  12.             }  
  13.         };  
  14.   
  15.         //jquery.form使用方式  
  16.         $("#sentImage").ajaxSubmit(options);  
  17.   
  18.     }  


五、设置Tomcat,建立图片服务器。  

打开${TOMCAT_HOME}/conf文件夹下的web.xml找到下图中相应位置,添加红框中的代码: 



    因为这个back项目建了一个upload文件夹,所以可以将本项目直接发布到图片服务器上做接收用,如果害怕加载相关jar文件,无端烧内存的话,可以建一个新的web项目,然后在跟目录上建一个upload文件夹,以次来接收图片也可以。我搭建的时候是在虚拟机里另开了一台CentOS作为服务器的,如果要在本机直接运行两个tomcat的话,记得一定要改server.xml中的三个端口。 

六、运行  

首先启动两个服务器,然后访问web服务器,选择图片,然后就能看到图片直接在图片域显示出来了。并且查看地址,会发现是图片服务器的地址。 

 

项目源代码及相关jar包:https://github.com/smallbug-vip/repo/tree/master/code/web/back


转自:http://smallbug-vip.iteye.com/blog/2275574

这篇关于ajax异步上传图片webservice转存图片服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/653406

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4: