老是麻烦您,现在单个文件的上传已经做好了,接下来应该在哪可以查到demo或是教程啊

解决方案 »

  1.   

    有个 OpenKM,java 的,开源的。但有些复杂。
    你可以借鉴下这个:
    java 开源的文件管理系统
      

  2.   

    我感觉好像做错了,现在仅仅是用struts将文件上传到了一个文件夹中,并没有和数据库连在一起,不知道应该怎么解决这个问题
      

  3.   


    <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>  
      

  4.   

    最近尝试了用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;
    }
    }
    封装的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>