ssh上传下载具体实现 老是麻烦您,现在单个文件的上传已经做好了,接下来应该在哪可以查到demo或是教程啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有个 OpenKM,java 的,开源的。但有些复杂。你可以借鉴下这个:java 开源的文件管理系统 我感觉好像做错了,现在仅仅是用struts将文件上传到了一个文件夹中,并没有和数据库连在一起,不知道应该怎么解决这个问题 <script type="text/javascript" src="${application}/resource/jquery/jquery.form.js"></script><script type="text/javascript">//formatterdatefunction formatterDate(val,row){ alert(val); return $.fn.datebox.defaults.formatter(val);}function formatterDown(value, row, index) {// alert(" value "+value+" |row "+row+" |index " +index);// return formatString('<img onclick="alert(\'{0}\');" src="{1}"/>', row.ta_id, '${application}/resource/easy-ui/themes/icons/search.png');// return '<a onclick="alert(\''+value+'\');" href="javascript:void(0);" style="color: red;">下载</a>';// return '<a href="${application}/train/affix/downloadTrainAffix.action?ta_id='+value+'" style="color: red;">下载</a>'; return '<a href="javascript:downloadFile(\''+value+'\');" style="color: red;">下载</a>';}function downloadFile(ta_id){ window.open("${application}/train/affix/downloadTrainAffix.action?ta_id="+ta_id);}</script><!-- 该用户角色有可编辑权限、或者培训报告附件时【上传】、【删除】按钮可见 --><!-- 培训附件管理 --> <table id="dg" title="" class="easyui-datagrid" style="height:250px" width="100%" url="${application}/train/affix/showTrainAffixs!doExecute.action?ta_type=${ta_type!''}&t_id=${t_id!''}&tr_id=${tr_id!''}&sb_id=${sb_id!''}" toolbar="#toolbar" pagination="false" border="false" rownumbers="true" fitColumns="true" singleSelect="true"> <thead> <tr> <th field="ta_fileName" width="550">文件名称</th> <th field="ta_fileType" width="100">文件类型</th> <th field="ta_uploadDate" width="300">上传日期</th> <th field="ta_id" width="150" formatter="formatterDown">操作</th> <!-- <th field="ta_uploadDate" width="50" formatter="formatterDate">上传日期</th> --> <!-- <th field="email" width="50">Email</th> --> </tr> </thead> </table> <div id="toolbar" style="display: none;"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newAffix()">上传附件</a> <!-- <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editAffix()">Edit Affix</a> --> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyAffix()">删除附件</a> </div> <div id="dlg" class="easyui-dialog" style="width:400px;height:250px;padding:10px 20px" shadow="true" modal="true" resizable="true" closed="true" buttons="#dlg-buttons"> <div class="ftitle">请选择要上传的附件</div> <form id="fm" method="post" novalidate="novalidate"> <input name="trainAffix.ta_type" type="hidden" value="${ta_type!''}"> <input name="trainAffix.t_id" type="hidden" value="${t_id!''}"> <input name="trainAffix.tr_id" type="hidden" value="${tr_id!''}"> <input name="trainAffix.sb_id" type="hidden" value="${sb_id!''}"> <div class="fitem"> <label>附件:</label> <input id="file" name="file" type="file" value=""> </div> </form> </div> <div id="dlg-buttons"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveAffix()">上传</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')">取消</a> </div> <div id="loading" class="easyui-dialog" shadow="true" modal="true" closed="true" closable="false" title="请稍等" style="width: 200px; height: 100px; text-align: center; vertical-align: middle; padding-top: 20px;"> <div style="margin-left: 20px; padding-left: 20px; text-align: left; background-image: url('${application}/default/images/loading.gif'); background-repeat: no-repeat;">正在处理,请稍等......</div> <!-- <img alt="loading" src="${application}/default/images/loading.gif"> 正在处理,请稍等...... --> </div> <script type="text/javascript"> var url; function newAffix() { $('#dlg').dialog('open').dialog('setTitle', '上传附件'); // $('#fm').form('clear'); url = '${application}/train/affix/uploadTrainAffix!doExecute.action'; } function editAffix() { var row = $('#dg').datagrid('getSelected'); if (row) { $('#dlg').dialog('open').dialog('setTitle', 'Edit Affix'); $('#fm').form('load', row); url = 'update_user.php?id=' + row.id; } } //保存 function saveAffix() { if ($('#file').val() == '') { $.messager.show({ title : '错误', msg : '请选择要上传的文件。' }); return false; } $('#loading').dialog('open'); $('#fm').attr('action', url); $('#fm').ajaxSubmit(function(data) { //$.messager.progress('close'); $('#loading').dialog('close'); if (data.indexOf('成功') > -1) { $('#dlg').dialog('close'); $('#dg').datagrid('reload'); } else { $.messager.show({ title : '错误', msg : data }); } }); // $('#fm').form('submit',{ // url: url, // onSubmit: function(){ // return $(this).form('validate'); // }, // success: function(result){ // var result = eval('('+result+')'); // if (result.errorMsg){ // $.messager.show({ // title: 'Error', // msg: result.errorMsg // }); // } else { // $('#dlg').dialog('close'); // close the dialog // $('#dg').datagrid('reload'); // reload the user data // } // } // }); } function destroyAffix() { var row = $('#dg').datagrid('getSelected'); if (row) { alert(row.ta_id); $.messager.confirm('确认', '您确定要删除【' + row.ta_fileName + '】吗?', function(r) { if (r) { $.post('${application}/train/affix/deleteTrainAffix.action', { ta_id : row.ta_id }, function(result) { if (result.indexOf('成功') != -1) { $('#dg').datagrid('reload'); // reload the user data } else { $.messager.show({ // show error message title : '错误', msg : '' + result }); } }, 'text'); } }); } } </script> <style type="text/css"> #fm{ margin:0; padding:10px 30px; } .ftitle{ font-size:14px; font-weight:bold; padding:5px 0; margin-bottom:10px; border-bottom:1px solid #ccc; } .fitem{ margin-bottom:5px; } .fitem label{ display:inline-block; width:80px; } </style> 最近尝试了用struts的iterator标签迭代读取数据库数据,学习了List和map,学长建议用bean封装set、get方法,然后再action中进行调用,在jsp页面使用iterator标签迭代数据,但是不知道应该如何使用哪个bean,我把代码贴上来,想请您看一下action文件package org.crazyit.hrsystem.action.emp.upload;import java.sql.ResultSet;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.struts2.ServletActionContext;import org.crazyit.bean.UploadFile;import com.opensymphony.xwork2.ActionSupport;import com.upload.DAO.uploadDAOImpl;public class ShowAction extends ActionSupport{ private static final long serialVersionUID = 1L; /*//iterator中项目名 private class file{ private String filePath; //…… }*/ ResultSet res=null;//=========================================================// private List<String> filePath = new ArrayList<String>(); /*public List<String> getFilePath() { return filePath; } public void setFilePath(List<String> filePath) { this.filePath = filePath; }*/ // private List<Map<String,String>> file; /*private List<Map<String,String>> file=new ArrayList<Map<String,String>>(); Map<String,String> map=new HashMap<String,String>(); public List<Map<String, String>> getFile() { return file; } public void setFile(List<Map<String, String>> file) { this.file = file; } public Map<String, String> getMap() { return map; } public void setMap(Map<String, String> map) { this.map = map; }*/// private UploadFile uploadFile; private UploadFile uploadFile=new UploadFile(); //========================================================= @SuppressWarnings({ "static-access", "unchecked" }) public String execute() throws Exception{ /* * List<ReserveBean> reserveList; * reserveList=bookRoomService.queryAllReserve(rBean); */ uploadDAOImpl udi=new uploadDAOImpl(); res=(ResultSet) udi.query1("SELECT * from staff"); while (res.next()) { // 判断是否还有下一个数据 // 根据字段名获取相应的值 String name = res.getString("name"); int age = res.getInt("age"); String sex = res.getString("sex"); String savePath = res.getString("savePath"); String depart = res.getString("depart"); String worklen = res.getString("worklen"); String wage = res.getString("wage"); //输出查到的记录的各个字段的值 System.out.println(name + " " + age + " " + sex + " " + savePath + " " + depart + " " + worklen + " " + wage); //================================================================ // filePath.add(savePath);//================================================================ /*map.put(name, savePath); file.add(map);*/ /*request.setAttribute("filePath",file);*///================================================================ String title=uploadFile.setTitle(name); String Path=uploadFile.setSavePath(savePath); } return SUCCESS; }}封装的UploadFilepackage org.crazyit.bean;import java.io.File;import java.util.ArrayList;public class UploadFile { private String title; private File upload; private String uploadContentType; private String uploadFileName; private String savePath; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; }}jsp页面<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><jsp:directive.page import="java.sql.*" import="com.upload.DAO.uploadDAOImpl" /> <%@taglib prefix="s" uri="/struts-tags" %><!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>Insert title here</title></head><body>it'a list about upload<%-- <table border="1" width="300"><s:iterator value="#fileList" id=""> <tr> <td align="center"> <s:property value="#fileList" /> </td> <td align="center"> <s:property value="#filePath" /> </td> </tr></s:iterator> --%><ul style="list-style:none; text-align: center;"> <li style="String: left;width: 155px">fileName</li> <li style="String: left;width: 155px">filePath</li> <!-- <li style="float: left;width: 155px">密码</li> <li style="float: left;width: 155px">年龄</li> <li style="float: left;width: 155px">生日</li> <li style="float: left;width: 155px">地址</li> --></ul> <div style="clear: both;"></div> <a href="upload/a.zip">图</a> <!-- 使用list调用 --> <%-- <s:iterator value="filePath" var="tempList"> <s:property value="#tempList"/> </s:iterator> --%> <!-- 使用list/map嵌套调用--> <%-- <s:iterator value="file" var="list"> <s:property value="#list"/> <s:iterator value="map" id="map"> <s:property value="#map.list"/> </s:iterator> </s:iterator> --%> <!-- 使用Bean调用--> <s:bean name="org.crazyit.bean.UploadFile" id="bean"> <s:iterator id="uf1" value="%{#bean.selectThing()}" status="st" > <s:property value="%{title}"/> <s:property value="%{savePath}"/> </s:iterator> </s:bean></table></body></html> 基于JAVA的XML开发中如何引用JAR包中的DTD做验证? 有关struts标签 BO和Cognos两选一 网页数据提交的方式. rs取时间格式错误 在struts2.0中如何使用eWebeditor java.lang.NoSuchMethodError问题,在线等大牛解答 初级菜鸟问:JSP中显示翻页的基础问题 resin加入到windows服务里的问题! 写好了验证码的生成了怎么调用啊 javascript 怎么用cookie保存商品浏览记录
你可以借鉴下这个:
java 开源的文件管理系统
<script type="text/javascript" src="${application}/resource/jquery/jquery.form.js"></script><script type="text/javascript">
//formatterdate
function formatterDate(val,row){
alert(val);
return $.fn.datebox.defaults.formatter(val);
}function formatterDown(value, row, index) {
// alert(" value "+value+" |row "+row+" |index " +index);
// return formatString('<img onclick="alert(\'{0}\');" src="{1}"/>', row.ta_id, '${application}/resource/easy-ui/themes/icons/search.png');
// return '<a onclick="alert(\''+value+'\');" href="javascript:void(0);" style="color: red;">下载</a>';
// return '<a href="${application}/train/affix/downloadTrainAffix.action?ta_id='+value+'" style="color: red;">下载</a>';
return '<a href="javascript:downloadFile(\''+value+'\');" style="color: red;">下载</a>';
}function downloadFile(ta_id){
window.open("${application}/train/affix/downloadTrainAffix.action?ta_id="+ta_id);
}</script><!-- 该用户角色有可编辑权限、或者培训报告附件时【上传】、【删除】按钮可见 -->
<!-- 培训附件管理 -->
<table id="dg" title="" class="easyui-datagrid" style="height:250px" width="100%"
url="${application}/train/affix/showTrainAffixs!doExecute.action?ta_type=${ta_type!''}&t_id=${t_id!''}&tr_id=${tr_id!''}&sb_id=${sb_id!''}"
toolbar="#toolbar" pagination="false" border="false"
rownumbers="true" fitColumns="true" singleSelect="true">
<thead>
<tr>
<th field="ta_fileName" width="550">文件名称</th>
<th field="ta_fileType" width="100">文件类型</th>
<th field="ta_uploadDate" width="300">上传日期</th>
<th field="ta_id" width="150" formatter="formatterDown">操作</th>
<!-- <th field="ta_uploadDate" width="50" formatter="formatterDate">上传日期</th> -->
<!-- <th field="email" width="50">Email</th> -->
</tr>
</thead>
</table>
<div id="toolbar" style="display: none;">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newAffix()">上传附件</a>
<!-- <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editAffix()">Edit Affix</a> -->
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyAffix()">删除附件</a>
</div>
<div id="dlg" class="easyui-dialog" style="width:400px;height:250px;padding:10px 20px" shadow="true"
modal="true" resizable="true"
closed="true" buttons="#dlg-buttons">
<div class="ftitle">请选择要上传的附件</div>
<form id="fm" method="post" novalidate="novalidate">
<input name="trainAffix.ta_type" type="hidden" value="${ta_type!''}">
<input name="trainAffix.t_id" type="hidden" value="${t_id!''}">
<input name="trainAffix.tr_id" type="hidden" value="${tr_id!''}">
<input name="trainAffix.sb_id" type="hidden" value="${sb_id!''}">
<div class="fitem">
<label>附件:</label>
<input id="file" name="file" type="file" value="">
</div>
</form>
</div>
<div id="dlg-buttons">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveAffix()">上传</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')">取消</a>
</div>
<div id="loading" class="easyui-dialog" shadow="true" modal="true" closed="true" closable="false"
title="请稍等"
style="width: 200px; height: 100px; text-align: center; vertical-align: middle; padding-top: 20px;">
<div style="margin-left: 20px; padding-left: 20px; text-align: left; background-image: url('${application}/default/images/loading.gif'); background-repeat: no-repeat;">正在处理,请稍等......</div>
<!-- <img alt="loading" src="${application}/default/images/loading.gif"> 正在处理,请稍等...... -->
</div>
<script type="text/javascript">
var url;
function newAffix() {
$('#dlg').dialog('open').dialog('setTitle', '上传附件');
// $('#fm').form('clear');
url = '${application}/train/affix/uploadTrainAffix!doExecute.action';
}
function editAffix() {
var row = $('#dg').datagrid('getSelected');
if (row) {
$('#dlg').dialog('open').dialog('setTitle', 'Edit Affix');
$('#fm').form('load', row);
url = 'update_user.php?id=' + row.id;
}
}
//保存
function saveAffix() {
if ($('#file').val() == '') {
$.messager.show({
title : '错误',
msg : '请选择要上传的文件。'
});
return false;
}
$('#loading').dialog('open');
$('#fm').attr('action', url);
$('#fm').ajaxSubmit(function(data) {
//$.messager.progress('close');
$('#loading').dialog('close');
if (data.indexOf('成功') > -1) {
$('#dlg').dialog('close');
$('#dg').datagrid('reload');
} else {
$.messager.show({
title : '错误',
msg : data
});
}
});
// $('#fm').form('submit',{
// url: url,
// onSubmit: function(){
// return $(this).form('validate');
// },
// success: function(result){
// var result = eval('('+result+')');
// if (result.errorMsg){
// $.messager.show({
// title: 'Error',
// msg: result.errorMsg
// });
// } else {
// $('#dlg').dialog('close'); // close the dialog
// $('#dg').datagrid('reload'); // reload the user data
// }
// }
// });
}
function destroyAffix() {
var row = $('#dg').datagrid('getSelected');
if (row) {
alert(row.ta_id);
$.messager.confirm('确认', '您确定要删除【' + row.ta_fileName + '】吗?', function(r) {
if (r) {
$.post('${application}/train/affix/deleteTrainAffix.action', {
ta_id : row.ta_id
}, function(result) {
if (result.indexOf('成功') != -1) {
$('#dg').datagrid('reload'); // reload the user data
} else {
$.messager.show({ // show error message
title : '错误',
msg : '' + result
});
}
}, 'text');
}
});
}
}
</script>
<style type="text/css">
#fm{
margin:0;
padding:10px 30px;
}
.ftitle{
font-size:14px;
font-weight:bold;
padding:5px 0;
margin-bottom:10px;
border-bottom:1px solid #ccc;
}
.fitem{
margin-bottom:5px;
}
.fitem label{
display:inline-block;
width:80px;
}
</style>
action文件
package org.crazyit.hrsystem.action.emp.upload;import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.apache.struts2.ServletActionContext;
import org.crazyit.bean.UploadFile;import com.opensymphony.xwork2.ActionSupport;
import com.upload.DAO.uploadDAOImpl;public class ShowAction extends ActionSupport{
private static final long serialVersionUID = 1L;
/*//iterator中项目名
private class file{
private String filePath;
//……
}*/
ResultSet res=null;
//=========================================================
// private List<String> filePath = new ArrayList<String>(); /*public List<String> getFilePath() {
return filePath;
}
public void setFilePath(List<String> filePath) {
this.filePath = filePath;
}*/
// private List<Map<String,String>> file;
/*private List<Map<String,String>> file=new ArrayList<Map<String,String>>();
Map<String,String> map=new HashMap<String,String>();
public List<Map<String, String>> getFile() {
return file;
}
public void setFile(List<Map<String, String>> file) {
this.file = file;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}*/// private UploadFile uploadFile;
private UploadFile uploadFile=new UploadFile();
//=========================================================
@SuppressWarnings({ "static-access", "unchecked" })
public String execute() throws Exception{
/*
* List<ReserveBean> reserveList;
* reserveList=bookRoomService.queryAllReserve(rBean);
*/
uploadDAOImpl udi=new uploadDAOImpl();
res=(ResultSet) udi.query1("SELECT * from staff");
while (res.next()) { // 判断是否还有下一个数据
// 根据字段名获取相应的值
String name = res.getString("name");
int age = res.getInt("age");
String sex = res.getString("sex");
String savePath = res.getString("savePath");
String depart = res.getString("depart");
String worklen = res.getString("worklen");
String wage = res.getString("wage");
//输出查到的记录的各个字段的值
System.out.println(name + " " + age + " " + sex + " " + savePath
+ " " + depart + " " + worklen + " " + wage);
//================================================================
// filePath.add(savePath);
//================================================================
/*map.put(name, savePath);
file.add(map);*/
/*request.setAttribute("filePath",file);*/
//================================================================
String title=uploadFile.setTitle(name);
String Path=uploadFile.setSavePath(savePath);
}
return SUCCESS;
}
}
封装的UploadFile
package org.crazyit.bean;import java.io.File;
import java.util.ArrayList;public class UploadFile {
private String title;
private File upload;
private String uploadContentType;
private String uploadFileName;
private String savePath;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
}
jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:directive.page import="java.sql.*" import="com.upload.DAO.uploadDAOImpl" />
<%@taglib prefix="s" uri="/struts-tags" %>
<!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>Insert title here</title>
</head>
<body>
it'a list about upload<%-- <table border="1" width="300">
<s:iterator value="#fileList" id="">
<tr>
<td align="center">
<s:property value="#fileList" />
</td>
<td align="center">
<s:property value="#filePath" />
</td>
</tr>
</s:iterator> --%><ul style="list-style:none; text-align: center;">
<li style="String: left;width: 155px">fileName</li>
<li style="String: left;width: 155px">filePath</li>
<!-- <li style="float: left;width: 155px">密码</li>
<li style="float: left;width: 155px">年龄</li>
<li style="float: left;width: 155px">生日</li>
<li style="float: left;width: 155px">地址</li> -->
</ul>
<div style="clear: both;"></div>
<a href="upload/a.zip">图</a>
<!-- 使用list调用 -->
<%-- <s:iterator value="filePath" var="tempList">
<s:property value="#tempList"/>
</s:iterator> --%>
<!-- 使用list/map嵌套调用-->
<%-- <s:iterator value="file" var="list">
<s:property value="#list"/>
<s:iterator value="map" id="map">
<s:property value="#map.list"/>
</s:iterator>
</s:iterator> --%>
<!-- 使用Bean调用-->
<s:bean name="org.crazyit.bean.UploadFile" id="bean">
<s:iterator id="uf1" value="%{#bean.selectThing()}" status="st" >
<s:property value="%{title}"/>
<s:property value="%{savePath}"/>
</s:iterator>
</s:bean>
</table>
</body>
</html>