package lzwBean;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.servlet.jsp.PageContext;
/**
* @author 李钟尉
* @version 文件上传 1.0
*/
public class LzwUploadBean {
private InputStream InputStreamState;
private String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_database11";
private String user = "sa";
private String password = "";
private Connection conn;
private PageContext pageContext;
private long fileSize;
private String errorMessage = "";
private Map<String, String> lzwParameter = new HashMap<String, String>();
public LzwUploadBean() {
}
public LzwUploadBean(String driver, String url) {
super();
this.driver = driver;
this.url = url;
}
/**
* <pre><h1>
* 解析Form表单
* </h1>
*
* form表单的enctype必须设置为:enctype="multipart/form-data"
* </br>
* 此方法为首方法,用于解析form表单中的属性。执行此方法解析表单值后,方可通过 {@link #getParameter(String)}方法获得表单的参数信息
* <br>
*
* @param contentType
* 传入内容类型信息。例如:request.getContentType();
* @param inputStream
* 传入请求的输入流。例如:request.getInputStream();
* </pre>
*/
private void resolverForm() {
InputStream inputStream = null;
try {
inputStream = pageContext.getRequest().getInputStream();
} catch (IOException e2) {
e2.printStackTrace();
}
String contentType = pageContext.getRequest().getContentType();
if (!isMultipar(contentType) || inputStream.equals(InputStreamState))
return;
if (contentType != null && inputStream != null) {
InputStreamState = inputStream;
int data;
StringBuffer datastr = new StringBuffer();
lzwParameter.clear();
try {
while ((data = inputStream.read()) != -1) {
datastr.append((char) data);
if (fileSize > 0 && datastr.length() > fileSize) {
datastr = null;
errorMessage = "文件超出大小限制。";
lzwParameter.put("error", errorMessage);
throw new Exception("文件超出大小限制。");
} else
lzwParameter.put("error", errorMessage);
}
inputStream.close();
String split = "boundary=";
String splitStr = "--"
+ contentType.substring(contentType.indexOf(split)
+ split.length());
String[] formFileds = datastr.toString().split(
"Content-Disposition: form-data; ");
for (int i = 0; i < formFileds.length; i++) {
int[] index = new int[4];
if (!formFileds[i].startsWith(splitStr)) {
index[0] = -1;
index[1] = formFileds[i].indexOf("\n", index[0]);
index[2] = formFileds[i].indexOf("\n", index[1] + 1);
index[3] = formFileds[i].indexOf("\n", index[2] + 1);
String name = "";
for (int lc = 0; lc < index.length - 1; lc++) {
String line = formFileds[i].substring(
index[lc] + 1, index[lc + 1]);
String[] lineFields = line.split("; ");
for (int j = 0; j < lineFields.length; j++) {
if (lineFields[j].startsWith("name=")) {
name = lineFields[j].substring(
lineFields[j].indexOf("\"") + 1,
lineFields[j].lastIndexOf("\""));
}
if (j > 0) {
String arg = name
+ "_"
+ lineFields[j].substring(0,
lineFields[j].indexOf("="));
String argContent = lineFields[j]
.substring(lineFields[j]
.indexOf("\"") + 1,
lineFields[j]
.lastIndexOf("\""));
lzwParameter.put(arg, argContent);
}
}
if (line.equals("\r")) {
lzwParameter.put(name, formFileds[i].substring(
index[lc + 1] + 1, formFileds[i]
.lastIndexOf(splitStr) - 2));
break;
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* <pre><h1>
* 上传表单数据到数据库中
* </h1>
* 应用实例:uploadToDB(driver,url,"tab_oneFormUploadFile","钟尉","男","26")
*
* @param driver
* JDBC驱动路径。
* <br>
* 例如SQLServer的“com.microsoft.jdbc.sqlserver.SQLServerDriver”
* @param url
* 数据库的访问路径。
* <br>
* 例如SQLServer的“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_database11;user=sa"
* <br>
* 路径中需要包含数据库名称和用户名与密码。
* @param tabName
* 指定数据库中表的名称,表单数据将保存到这个数据表中。
* @param valuesArg
* 对应表的字段值。
* </pre>
*/
public boolean uploadToDB(String driver, String url, String tabName,
String... valuesArg) {
resolverForm();
if (getParameter("Submit") != null && getParameter("file") != null) {
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
String values = " values(?";
for (int i = 1; i < valuesArg.length; i++) {
values += ",?";
}
values += ")";
PreparedStatement pst = conn.prepareStatement("insert into "
+ tabName + values);
for (int i = 0; i < valuesArg.length; i++)
if (valuesArg[i] != null)
pst
.setBytes(i + 1, valuesArg[i]
.getBytes("ISO-8859-1"));
else {
pst.setString(i + 1, null);
throw new Exception("有参数为空");
}
pst.execute();
pst.close();
conn.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return true;
} else
return false;
}
/**
* <pre><h1>
* 打印数据到输出流
* </h1>
*
* @param tabName
* 数据表的名称
* @param condition
* 查询条件。例如“name='李钟尉'”。
* @param column
* 要获取的字段,应选择存储图片信息的字段。例如:“file”。
* @param outputStream
* 输出流,获得的字段信息将输出到该流中,可通过request获得。
* <br>
* 例如:“request.getOutputStream()”。
* </pre>
*/
public void printOutputStreamFromDB(String tabName, String condition,
String column, OutputStream outputStream) {
Statement st = null;
ResultSet rs = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
s
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
文件上传.rar (24个子文件)
文件上传
build.xml 3KB
src
conf
MANIFEST.MF 25B
java
lzwBean
LzwUploadBean.java 12KB
nbproject
build-impl.xml 58KB
private
private.properties 476B
ant-deploy.xml 3KB
project.xml 692B
genfiles.properties 473B
project.properties 3KB
web
META-INF
context.xml 85B
WEB-INF
web.xml 286B
index.jsp 2KB
bg.jpg 11KB
build
empty
generated
src
org
apache
jsp
index_jsp.java 5KB
index_jsp.class.smap 94B
classes
org
apache
jsp
index_jsp.class 6KB
web
META-INF
context.xml 85B
MANIFEST.MF 25B
WEB-INF
web.xml 286B
classes
lzwBean
LzwUploadBean.class 9KB
.netbeans_automatic_build 0B
.netbeans_update_resources 0B
index.jsp 2KB
bg.jpg 11KB
generated-sources
ap-source-output
共 24 条
- 1
资源评论
- Zidane_20142016-06-11很不错的资源。
- 千叶树2016-04-01没有实际运行,感谢分享
- sydy13142014-06-06可以运行,可以参考参考
- 牙刷也刷牙2014-10-24很好的资源,感谢分享!!!
哈哈妹妹
- 粉丝: 4
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 办工,日常生活中电脑中的磁盘清理功能,可以查找本机的指定大小文件,非常方便!
- cuda-使用cuda并行加速实现之gemv.zip
- cuda-使用cuda并行加速实现之softmax.zip
- 基于Opencv的车牌识别系统
- cuda-使用cuda并行加速实现之reduce.zip
- 基于Protel 99se 超级元件库电子器件芯片库原理图库2MB(810个)+PCB封装库10MB(1240个)合集.zip
- mmexport1713919112597.jpg
- cuda-使用cuda并行加速实现之kmeans聚类算法的实现.zip
- web-work-2024-4-24
- cuda-使用cuda并行加速实现之UpsampleNearest2D.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功