Java实现模拟QQ空间图片上传

Java实现模拟QQ空间图片上传

首先看效果:

首先编写我们的上传jsp代码,如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Java实现开发QQ空间上传</title>
<style type="text/css">
body{background: url("image/bg_webp.jpg");}
*{padding: 0px;margin: 0px;}
.qq{width: 520px;height: 70px;margin: 200px auto;border: 1px solid #e6e6e6;background-color: #fff}
.qq .qq_pic{float: right;width: 48px;height: 70px;border-left: 1px solid #eee8d1;background-color: #fafafa;border-right: 1px solid #eee8d1 }
.qq .qq_pic .bg_button{width: 48px;height: 70px;display: block;padding: 20px 0px 0px 10px}
.qq .qq_pic .bg_button:HOVER{background-color: #fff;height: 50px;width: 38px;}
.qq .qq_pic .bg_button i{background: url("image/bg_button.png");background-position: -490px -125px;width: 25px;height: 25px;display: block;}
.qq .qq_pic input{display: none;}
</style>
</head>
<body>

	<form action="<%=request.getContextPath()%>/UploadQQServlet" enctype="multipart/form-data" method="post" id="saveForm">
		<div class="qq">
				<div class="qq_pic">
					<a href="#" class="bg_button" onclick="openBrowser()">
						<i></i>
					</a>
					<input type="file" id="fileName_upload" name="file1" onchange="saveFile()">
				</div>
		</div>
	</form>
	<div>
	<img alt="图片预览" src="upload/${fileName}" style="height: 30px;width: 30px;">

	</div>

<script type="text/javascript">
 function openBrowser(){
 	var boolean=navigator.appName=="Microsoft Internet Explorer"?true:false;
 	if(boolean){
 		document.getElementById("fileName_upload").click();
 	}else{
		var a=document.createEvent("MouseEvents");
		a.initEvent("click",true,true);
		document.getElementById("fileName_upload").dispatchEvent(a);
 	}
 }
 function saveFile(){
 	document.getElementById("saveForm").submit();
 }

</script>
</body>
</html>

然后编写我们的后台代码,这里我就简单使用Servlet

package com.wonders.upload;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadQQServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		//获取文件路径
		String strPath=request.getRealPath("/")+"/upload";
		File file =new File(strPath);
		if(!file.exists())file.mkdirs();
		FileItemFactory factory=new DiskFileItemFactory();
		ServletFileUpload upload=new ServletFileUpload(factory);
		//从请求对象中获取文件信息
		List items;
		try {
			items = upload.parseRequest(request);
		if(items!=null){
			for(int i=0;i<items.size();i++){
				Iterator iterator=items.iterator();
				while(iterator.hasNext()){
				FileItem item=(FileItem)iterator.next();
				if(item.isFormField()){
					continue;
				}else{
					String fileName=item.getName();
					Long fileSize=item.getSize();
					int pos=fileName.indexOf(".");
					String ext=fileName.substring(pos,fileName.length());
				 	fileName=UUID.randomUUID().toString()+ext;
				 	request.getSession().setAttribute("fileName", fileName);
				 	File saveFile=new File(strPath,fileName);
				 	item.write(saveFile);
				 	response.sendRedirect("UploadQQ.jsp");
				 }
				}
			}
		}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}

ok,此代码联手而用!

下载源码:http://download.csdn.net/detail/u010506940/8401307

首先看效果:

时间: 2024-08-02 23:45:34

Java实现模拟QQ空间图片上传的相关文章

Android模仿QQ空间图片上传——原理

MainActivity.class package com.example.imagedemotext; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import an

java模拟post方式实现图片上传

package com.yanek.util; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.ne

java图片上传(mvc)

最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.idea开发. 一.图片上传还是使用的这款jq插件.前端部署这款插件,不用说了吧.效果图       二.前台代码只需要盖一个位置.因为是比较好用的插件.插件样式自行修改. 三.后台代码. 后面看不见的. 这个图片上传主要是自己写了几个函数.让图片储存更加方便.分成了年月日储存.但是后期遍历比较困难,

java web图片上传和文件上传

图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定要写属性enctype="multipart/form-data" 2.为了能保证文件能上传成功file控件的name属性值要和你提交的控制层变量名一致, 例如空间名是file那么你要在后台这样定义 private File file; //file控件名 private String fileContentType;//图

android自定义View实现图片上传进度显示(仿手机QQ上传效果)

首先看下我们想要实现的效果如下图(qq聊天中发送图片时的效果): 再看一下我实现的效果: 1.效果已经看见了,下面我们来实现它.首先我创建一个android工程ProgressImageView.然后我们重写ImageView控件,创建ProcessImageView类代码如下: package com.example.processimageview; import android.annotation.SuppressLint; import android.content.Context;

安卓自定义View实现图片上传进度显示(仿QQ)

首先看下我们想要实现的效果如下图(qq聊天中发送图片时的效果): 再看下图我们实现的效果: 实现原理很简单,首先我们上传图片时需要一个进度值progress,这个不管是自己写的上传的方法还是使用第三方开源库,其次,需要自定义一个View并重写onDraw方法,此例中的进度是开启了一个线程,然后模仿进度递增,然后将进度值通过自定义View调用一个自定义方法传进自定义View并根据进度进行重绘. 绘制分为三部分: 1.绘制矩形(图片面积)上半部分阴影区: 2.绘制矩形(图片面积)下半部分非阴影区:

Java图片上传

图片上传,其实,也可以按照之前文章--文件上传的方式实现,因为图片也是文件.只要是文件,都可以用流来接收,然后把流给写出到指定的物理空间下,形成我们需要的物理文件. 今天,我们就不用上传文件的方式,这种方式和我之前的一篇制作二维码的文章类似.首先,读文件,需要知道文件的路径,比如放在C盘下面的某个文件.然后把这个图片通过画笔方式给画出来.放到指定服务器路径下.不需要第三方插件,sun公司提供的image工具类就可以实现. 下面我们把桌面上的blue.png图片上传到服务器上. public st

UEditor之基于Java图片上传前后端源码研究

开心一笑 一定要快乐学习,所以学习之前先看个笑话: 刚来北京,租了一个小房,一楼,上淘宝买衣服,选了付钱了联系卖家:"我已付款,请发货."谁知那货直接说:"我看到你地址了,自己上楼来拿吧!我就在你楼上." 拿你妹,老子付了邮费的...送下来. 提出问题 Ueditor前后端源码的学习和简单的研究??? 解决问题 前提: 假如你已经看了我的前一篇文章,这一点很重要的啊,当然不看也可以,因为你已经是一个高手,就像我一样,哈哈: 假如你已经安装tomcat服务器: 假如你

UEditor之基于Java图片上传前后端源码研究 (转)

http://blog.csdn.net/huangwenyi1010/article/details/51637439 这是我的项目目录 1.从访问路径http://localhost:8081/Test/_examples/simpleDemo.html,我们主要是要看看,富文本框被加载出来之前,会调用哪些代码, 不卖关子,很明显,会调用后端的controller.jsp代码,因为我们已经在ueditor.config配置了: // 服务器统一请求接口路径 , serverUrl: URL