黑马程序员技术交流社区
标题:
新手报到 分享几个我觉得比较精华的源码 求改进
[打印本页]
作者:
qixing0918
时间:
2013-10-24 17:53
标题:
新手报到 分享几个我觉得比较精华的源码 求改进
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<FONT color=red><script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript" src="dwr/interface/checkUname.js"></script></FONT>
<script type="text/javascript">
function check(uname){
checkUname.checkUname(uname,callBack);
}
function callBack(data){
if(data==false){
alert("用户名已存在");
return false;
}
if(data){
var picture = document.getElementById("file2").value.toLowerCase();
document.getElementById("file").value = picture;
document.ss.submit();
}
else
return false;
}
</script>
<head>
<base href="<%=basePath%>">
<title>添加</title>
</head>
<body>
<s:form action="<FONT color=red>user/LoginAction!add.action</FONT>" method="post" enctype="multipart/form-data" id="ss">
<s:token />
<table>
<td>
<tr><td colspan="2"></td></tr>
<tr><td>用户名</td><td align="left"><input type="text" name="uname" id="uname" /></td></tr>
<tr><td>密 码</td><td align="left"><input type="password" name="pwd" id="pwd"/></td></tr>
<tr><td></td><td align="left">
<s:file name="file2" label="照片" id="file2" contenteditable="false" onchange="viewimg()"/>
<input type="hidden" name="file" id="file"/>
</td></tr>
</td>
</table>
<input type="button" value="添加" onclick="jiaoyan()"/>
<input type="button" value="返回" onclick="javascript:window.location.href='user/LoginAction!sel.action'"/>
<br/>
</s:form>
<script type="text/javascript">
<FONT color=red>// 显示图片的js</FONT>
function viewimg(){
var imgup=document.getElementById("file2");
var imgpath=getPath(imgup);
//判断是否是图片格式
var imgname=imgup.value.substring(imgup.value.lastIndexOf("."),imgup.value.length)
imgname=imgname.toLowerCase()
if <FONT color=red>((imgname!='.jpg')&&(imgname!='.gif')&&(imgname!='.jpeg')&&(imgname!='.png')&&(imgname!='.bmp')){</FONT>
alert("请选择图片文件,谢谢!");
imgup.focus();
//清空file里面的值
imgup.select();
document.selection.clear();
}
else{
//显示图片
document.getElementById("sig_preview").innerHTML="<img src='"+imgpath+"' border=0 width=60 height=60>"
}
}
<FONT color=red>//该函数解决iE下路径问题。兼容ie6,7,firefox add by exceljava 2010-1-6
</FONT>function getPath(obj){
if(obj){
if (window.navigator.userAgent.indexOf("MSIE")>=1){
obj.select();
return document.selection.createRange().text;
}else if(window.navigator.userAgent.indexOf("Firefox")>=1){
if(obj.files){
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}
<FONT color=red>//校验</FONT>
function jiaoyan(){
var uname = document.getElementById("uname").value;
var pwd = document.getElementById("pwd").value
if(uname==undefined||uname==""){
alert("请填写用户名!");
return false;
}
if(pwd==undefined||pwd==""){
alert("请填写密码!");
return false;
}
var picture = document.getElementById("file2").value.toLowerCase();
if(picture!=""){
// alert("请选择一张照片");
// return false;
//} else {
<FONT color=red>var regex = /\.(gif|bmp|jpg|png|jpeg)$$$$/;
</FONT>if (!regex.test(picture)){
alert("上传的文件格式不正确!");
return false;
}
}
var uname = document.getElementById("uname").value;
return check(uname);
}
</script>
<div id="sig_preview"></div>
</body>
</html>
复制代码
代码解读 1. 在jsp调用 action中的方法
user/LoginAction!add.action
2.照片上传的问题
3.浏览器兼容问题
4.dwr 的使用问题 (关于ajax的)
5.是否是图片两种验证方式
文件上传几个问题
1.什么时候调用 比如add方法你就要调用
2.两种方式 一种直接存数据库 二种存项目文件中 数据库表中保存路径
3.本实例采用的是 二 那么需要接受什么参数 怎么处理 (给个源码)
public class FileHelp {
//获得存放图片项目路径
public static String getPath(){
HttpServletRequest request = ServletActionContext.getRequest();
String realPath = request.getSession().getServletContext().getRealPath("");
return realPath;
}
/* * 获取一个记录编号 * 格式:12 位时间+业务编号+随即数 *
* 例如:100330101028+04+893 (2010-03-30-10:20:28, 业务号是04, 随机数893 )
* *@param btype 业务类型编号 员工业务01 招聘业务02……
* *@return code 构造的一个记录编号
*/
public static String getNo(){
//返回的code String code;
//系统当前时间 12位
SimpleDateFormat sdf=new SimpleDateFormat("yyMMddhhmmss");
String nowDate=sdf.format(new java.util.Date());
//随机数
String iRandom = Math.round(Math.random()*900 )+100 +"";
//整合一个code
return nowDate + iRandom ;
}
//上传
public static String upload(File file,String name) throws Exception{
// 获得上传图片的后缀名
String aa = name.substring(name.lastIndexOf("."));
// 在给定的路径下存放图片信息
String no = FileHelp.getNo();
File parentDir = new File(FileHelp.getPath()+"\\upload", no + aa);
String pname = "upload\\"+ no + aa;
// 读下给定路径的文件
File src = new File(FileHelp.getPath());
// 判断文件是否存在,不存在进行创建
if (!src.exists()) {
src.mkdirs();
}
// 创建输入流
InputStream in = null;
// 创建输出流
OutputStream out = null;
try {
// 上传文件写入请求流中
in = new FileInputStream(file);
// 读取流中的数据
byte[] b = new byte[in.available()];
in.read(b);
// 把本地读到的文件放到输出流里
out = new FileOutputStream(parentDir);
// 写出输出流
out.write(b);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
// 及时关闭输入和输出流
if (in != null)
in.close();
if (out != null)
out.close();
}
return pname;
}
}
复制代码
我想问的是 这个实例感觉跟 ssh上传图片没什么关系
主要是通过这个FileHelp类实现的 谁有通过ssh 上传图片的源码
作者:
qixing0918
时间:
2013-10-24 19:58
终于有技术分类 感谢赞美啊 我都写10几个帖子了 终于有分类 谢谢狼王 我骄傲
我会继续努力的{:soso_e152:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2