`

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

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

一、搭建SpringMVC环境

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

配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>back</display-name>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:application-context.xml</param-value>
	</context-param>
	<!-- spring的监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- 中文过滤器 -->
	<filter>
		<filter-name>encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>*.shtml</url-pattern>
	</filter-mapping>

	<!-- springmvc 配置 前台 -->
	<servlet>
		<servlet-name>front</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc-front.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>front</servlet-name>
		<url-pattern>*.shtml</url-pattern>
	</servlet-mapping>

	<!-- springmvc 配置 后台 -->
	<servlet>
		<servlet-name>back</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc-back.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>back</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

</web-app>


配置pom.xml

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

配置springmvc-back.xml

<!-- springmvc 扫包 @Controller @Service ..... -->
	<context:component-scan base-package="cn.smallbug"
		use-default-filters="false">
		<context:include-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
	</context:component-scan>
<!-- jsp视图 -->
	<bean id="jspViewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/" />
		<property name="suffix" value=".jsp" />
	</bean>


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

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

	<!-- 文件上传 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="UTF-8"></property>
		<!-- <property name="maxUploadSize" value="2348000"></property> -->
	</bean>


三、编写接收文件的Controller

package cn.smallbug.core.controller;

import java.io.IOException;
import java.util.UUID;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FilenameUtils;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

@Controller
public class UploadImage {

	@RequestMapping(value = "/upload/uploadImage.do")
	public void uploadImage(@RequestParam(required = false) MultipartFile pic, HttpServletResponse response) {

		String ext = FilenameUtils.getExtension(pic.getOriginalFilename());
		String uuid = UUID.randomUUID().toString();
		String newFileName = uuid + "." + ext;

		// 实例化jersey
		Client client = new Client();// --->

		// 另一台服务器的请求路径
		String url = "http://192.168.88.131:8080/back/upload/" + newFileName;

		// 设置请求路径
		WebResource resource = client.resource(url);

		// 发送
		try {
			resource.put(String.class, pic.getBytes());
		} catch (IOException e) {
			throw new RuntimeException(e);
		}

		// 将url格式化成json串
		JSONObject jo = new JSONObject();
		jo.put("url", url);

		// 发送
		try {
			response.setContentType("application/json;charset=UTF-8");
			// response.setContentType("text/xml;charset=UTF-8");
			// response.setContentType("text/plain;charset=UTF-8");
			response.getWriter().write(jo.toString());
		} catch (IOException e) {
			throw new RuntimeException(e);
		}
	}
}


四、导入js库,编写jsp



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

编写表单和图片显示域:

<body>

	<form id="sentImage" action="${pageContext.request.contextPath }/upload/uploadImage.do" method="post"
		enctype="multipart/form-data">
		<input type="file" onchange="uploadPic()" name="pic" />
	</form>
	<div id="20160202852"></div>
</body>


当选择图片之后会触发uploadPic()函数,开始上传图片:
function uploadPic() {
		//定义参数
		var options = {
			url : "${pageContext.request.contextPath }/upload/uploadImage.do",
			dataType : "json",
			type : "post",
			//上传成功后回调函数
			success : function(data) {
				var img = $("<img />");
				img.attr("src",data.url);
				$("#20160202852").append(img);
			}
		};

		//jquery.form使用方式
		$("#sentImage").ajaxSubmit(options);

	}


五、设置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
  • 大小: 18 KB
  • 大小: 58.5 KB
  • 大小: 146.9 KB
0
0
分享到:
评论

相关推荐

    ajax异步调用webservice实例

    本实例将重点讲解如何利用AJAX进行异步调用WebService,为用户提供无缝的交互体验。 一、AJAX基础 1. AJAX的核心是XMLHttpRequest对象,它提供了与服务器通信的能力,可以在后台与服务器进行数据交换。 2. AJAX通过...

    C# winfrom中webservice接口连接服务器上传图片和下载图片

    四、上传图片 1. 创建上传方法:在WinForm中,创建一个按钮或菜单项,绑定点击事件。在事件处理函数中,实现图片上传的逻辑。 2. 选择图片:使用OpenFileDialog控件让用户选择要上传的图片文件。 3. 转换为Byte数组...

    Android客户端调用webService上传图片到服务器

    在Android客户端调用Web Service上传图片到服务器的过程中,主要涉及以下几个关键知识点: 1. **文件I/O操作**:客户端首先需要从SD卡或其他存储位置读取图片文件。这里使用`FileInputStream`读取图片文件,然后...

    ajax+webservice跨域实现文件上传

    【Ajax+WebService跨域实现文件上传】是一种在Web应用程序中常用的技术组合,它允许前端页面通过Ajax异步地与远程Web服务进行通信,同时解决跨域限制,实现文件的上传功能。这一技术主要涉及到以下几个核心知识点: ...

    webservice上传图片到服务器

    在这个场景中,我们将使用`KSOAP2`库来调用`webservice`,实现从Android设备上传图片到服务器的功能。以下是关于这个主题的详细解释。 ### 1. `KSOAP2`简介 `KSOAP2`是Android平台上一个轻量级的、用于调用SOAP...

    WebSerices异步调用方法总结

    WebService 异步调用是指在客户端和服务器端之间进行异步数据交换的过程。异步调用可以提高系统的性能和可扩展性,实现高效的数据交换。下面是 WebService 异步调用的实现方法总结: 一、异步调用方式 WebService ...

    C# winfrom中webservice接口连接服务器上传图片和下载图片.zip

    本案例中,我们关注的重点是如何利用C# WinForm客户端通过WebService接口连接服务器,实现图片的上传和下载功能。这里我们将详细讲解相关知识点。 1. WebService介绍: WebService是一种基于HTTP协议的跨平台、跨...

    ajax跨域请求WebService.asmx

    【Ajax跨域请求WebService.asmx】是一个常见的Web开发技术应用场景,主要涉及到JavaScript的Ajax技术、C#编程语言以及ASP.NET的WebService组件。Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的...

    webservice接收安卓上传图片

    在本场景中,我们关注的是Android设备通过WebService向C#服务器上传图片,这个过程涉及到的主要知识点包括Base64编码、Android的HTTP客户端库、C#中的文件处理以及WebService接口设计。 1. **Base64编码**:由于...

    jQuery使用Ajax方法调用WebService.doc

    ### jQuery使用Ajax方法调用WebService知识点详解 #### 一、简介 在Web开发领域中,Ajax(Asynchronous JavaScript and XML)技术被广泛应用于实现页面局部刷新等功能,极大地提升了用户体验。结合jQuery这一流行的...

    Android 上传文件到c# webservice

    在Android应用开发中,有时需要将本地文件上传到服务器,以实现数据同步或者备份功能。在本场景中,我们讨论的是如何将Android设备上的文件上传到由C#编写的Web服务(WebService)。以下是对这个过程的详细解释: 1...

    webservice上传下载图片

    Web服务(WebService)是一种基于标准协议的...通过以上步骤,我们可以利用WebService实现在本地和服务器之间的图片上传下载,并在PictureBox中展示。这个过程涵盖了网络通信、文件操作、数据编码等多个方面的知识点。

    jQuery使用Ajax方法调用WebService

    本文将深入探讨如何使用jQuery的Ajax方法来调用WebService,从而实现异步数据交换,提升用户体验。 首先,理解Ajax(Asynchronous JavaScript and XML)的核心概念是关键。Ajax允许网页在不刷新整个页面的情况下与...

    android 异步封装调用Webservice

    "Android异步封装调用Webservice"是指将调用Web服务的过程进行封装,使其能够在后台线程执行,避免阻塞主线程,提升用户体验。C# Webservice是一种基于.NET框架的服务,可以通过SOAP协议与其他平台(如Android)进行...

    用WebService进行异步通信

    ### 用WebService进行异步通信 #### 一、引言 在现代软件开发中,Web服务(WebService)作为实现系统间交互的一种重要手段,在企业级应用和服务端开发中扮演着核心角色。然而,在某些场景下,例如智能客户端应用中...

    ajax和JavaScript分别调用Webservice实例

    在IT领域,Ajax(异步JavaScript和XML)和JavaScript是两个关键的技术,它们在构建现代交互式Web应用程序中起着至关重要的作用。本压缩包包含的三个文档详细讲解了如何利用Ajax和JavaScript来调用WebService,这对于...

    C# 通过WebService上传视频文件到服务器虚拟机下源码

    本主题将深入探讨如何使用C#通过Web Service上传视频文件到服务器虚拟机下的源码实践。 首先,`WebService`是基于HTTP协议的远程调用技术,允许不同的应用程序之间进行数据交换。在C#中,我们通常使用ASP.NET来创建...

    WebService和Ajax总结

    1. **XMLHttpRequest对象**:是Ajax的核心,JavaScript通过它与服务器进行异步通信,发送请求并接收响应。 2. **JavaScript**:负责处理用户交互,创建和控制XMLHttpRequest对象,解析服务器返回的数据,并动态更新...

Global site tag (gtag.js) - Google Analytics