`
chennaid2
  • 浏览: 51166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • b_l_east: 在主动模式下,如果有多个客户端,服务器对每一个客户端均使用20 ...
    ftp

广告项目:(1 )文件上传

阅读更多

文件上传:

 

Struts文件上传心得:

 

1.使用 org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;这个拦截器,在action被调用之前,会首先走到fileUpload拦截器(对应的是FileUploadInterceptor类),在这个拦截器中,会先看一下request是不是 MultiPartRequestWrapper,如果不是,就说明不是上传文件用的request,fildUpload拦截器会直接将控制权交给下一个拦截器;如果是,就会把request对象强转为MultiPartRequestWrapper对象,然后调用hasErrors方法,看看有没有上传时候产生的错误,有的话,就直接加到了Action的错误(Action级别的)中了。另外,在fileUpload拦截器中会将MultiPartRequestWrapper对象中放置的文件全取出来,把文件、文件名、文件类型取出来,放到request的parameters中,这样到了params拦截器时,就可以轻松的将这些内容注入到Action中了,这也就是为什么fileUpload拦截器需要放在params拦截器前面的理由。在文件都放到request的parameters对象里之后,fileUpload拦截器会继续调用其他拦截器直到Action等执行完毕,他还要做一个扫尾的工作:把临时文件夹中的文件删除(这些文件是由commons-fileupload组件上传的,供你在自己的Action中将文件copy到指定的目录下,当action执行完了后,这些临时文件当然就没用了)。

 

2.Struts 2的文件上传,底层还是由apache的commons-fileupload 实现的。

 

3.配置文件:

<!-- 上传的文件存放目录 -->


 <constant name="struts.multipart.saveDir" value="tmp"/>
 
 
 <!-- 参数struts.multipart.maxSize 为文件尺寸   默认是2M,如果不进行配置上传超出2M,会抛出错误 -->
 <constant name="struts.multipart.maxSize" value="2000000" />

 

 

 

 

4.页面的标签:标签的名字一是“upload”

 

<input title="浏览..." value=""  id="file_id" name="upload" class="e_inputfile" onfocus="this.className='e_inputFocusfile'" onblur="this.className='e_inputfile'" type="file" /> 

 

5.1  页面代码:

 

upload.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
 String path = request.getContextPath();
 String basePath = request.getScheme() + "://"
   + request.getServerName() + ":" + request.getServerPort()
   + path + "/";
%>
<%@ taglib prefix="c" uri="/WEB-INF/tags/c.tld" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>广告系统</title>
<link href="<%=path %>/css/platform.css" rel="stylesheet" type="text/css"  />

<!-- JQUERY 主要JS库 -->
<script type="text/javascript" src="<%=path %>/js/lib/jquery.js"></script>
<!-- JSTREE 主要JS库-->
<script type="text/javascript" src="<%=path %>/js/lib/jquery.cookie.js"></script>
<script type="text/javascript" src="<%=path %>/js/lib/jquery.hotkeys.js"></script>
<script type="text/javascript" src="<%=path %>/js/jquery.jstree.js"></script>
<script type="text/javascript" src="<%=path %>/js/util.js"></script>
<script type="text/javascript" src="<%=path %>/jquery/jquery.form.js"></script>

<script type="text/javascript">   
 function changeBody(index){    
  switch(index){    
   case 1:{    
    document.getElementById('wm-info').style.display = "";       
   break;    
   }    
  }   
 }   
 function close(){
  ocument.getElementById("wm-info").style.display ="none";       
 } 
</script>
<script type="text/javascript">

 var sel_node_id;
 
 //公共方法--获得dom对象
 function getObj(id){
  var obj = document.getElementById(id);
  return obj; 
 }
 
 //公共方法-选择下拉框的值
 function selectOptionVal(id){
  var positionVal="-1";
  var selectPobj = getObj(id);
  var options   = selectPobj.options;
  for(var i = 0; i < options.length; i++){
   var optionResult = options[i].selected ;
   if(optionResult){
    positionVal = options[i].value;
   }
  }
  return positionVal;
 }

 //检查input框,路径不能为空
 function checkFileName(){
  
  var uploadFilePath = getObj("file_id").value;
  //alert("上传文件的路径"+uploadFilePath);
  if(uploadFilePath == "" || uploadFilePath == null || uploadFilePath == undefined){
   alert("上传的文件不能为空!");
   return false;
  }
  return true;
 }
 
 //检查通过开始提交,后开始验证到上传文件
 function submitForm(nodeId,materialTypeVal,postionTypeVal,positionVal,iscover){
  var form = $("form[name=form1]"); //其中的form1是我form的名称   
    var options  = {   
   url:'<%=application.getContextPath() %>/material/checkMaterial.do',
   type:'post',
   dataType:'json',  
   data: {nodeTypeId:nodeId,materialType:materialTypeVal,postionType:postionTypeVal, positionId:positionVal,cover:iscover},   
   success:function(data){
    var flag = data.result; 
    if(flag){
     alert("上传成功");
    }else{
     alert("上传失败,原因:"+data.msg);
    }
          
    }  
   };  
        form.ajaxSubmit(options);  

 }
 
 //提交前先审核
 function checkFile(){

  var nodeId = getObj("treeNodeId").value;

  if(nodeId == null || nodeId == undefined){
   alert("请选择素材分类树的节点!");
   return;
  }
  
  //确定那个素材分类
  var materialType = selectOptionVal("sel_material_type");
  if(materialType == "-1"){
   alert("请选择-素材分类!");
   return;
  }
  
  //确定那个素材类型
  var postionType = selectOptionVal("sel_postion_type");
  if(postionType == "-1"){
   alert("请选择-素材类型!");
   return;
  }
  
  //确定那个广告位的素材
  var positionVal = selectOptionVal("sel_postion_id");
  if(positionVal == "-1"){
   alert("请选择-广告位!");
   return;
  }
  
  if(!checkFileName()){
   return;
  }

  var form = $("form[name=form1]"); //其中的form1是我form的名称  
        var options  = {  
    url:'<%=application.getContextPath() %>/material/checkFileName.do',
   type:'post',
   dataType:'json',  
   data: {nodeTypeId:nodeId},   
   success:function(data){
    var flag = data.result; 
    var isHasSame = data.isHasSame; 
    if(flag){
     if(isHasSame){
      if(confirm("有同名的文件,确定要覆盖吗?")){
       submitForm(nodeId,materialType,postionType,positionVal,1);
      }else{
       alert("请您修改上传文件的名字!");
      }
     }else{
      submitForm(nodeId,materialType,postionType,positionVal,0);
     }
    }else{
     alert("上传失败,原因:"+data.msg);
    }
    },
    async:false  
   };  
        form.ajaxSubmit(options);  

  
 }
 
</script>

<script type="text/javascript">

 //加载树
 function init(){
  $.ajax({
   type:"post",
   //url: getContextPath() + '/material/listMaterialType.do',
   url: "<%=application.getContextPath() %>/material/listMaterialType.do",
   dataType :"String",
   success:function(json){
    var str = json.replace(/\"id"/g, 'attr:{"id"');
    var str2 = str.replace(/\,"data"/g, '},data');
    var jsondata = eval(str2);
       jtree(jsondata);
   },
   error:function(){
    alert("服务器异常,请稍后重试!");
   },
   async:false
  });
  }   
    
  function jtree(o){
   var ctxPath = "<%=path%>";
   $("#tree").jstree(
    //json加载数据节点     
    {  
   
     //json数据区域 
        "json_data" :{data:o}
      ,
     //要使用到的插件
            "plugins" : [ "themes", "json_data", "ui", "crrm", "cookies", "types"]
                ,
             "types" : {
              "max_depth" : -2,
              "max_children" : -2,
              "valid_children" : [ "drive" ],
              "types" : {
               "default" : {
                "valid_children" :"none",
                "icon" : {
                 "image" : ctxPath+"/images/folder.png"
                }
               }
              }
             }
          })
       
      //选择事件
   .bind("select_node.jstree", function(e, data) {
          var id = parseInt(data.rslt.obj.attr("id"));
          document.getElementById("treeNodeId").value =id;
         })
                 
  }
</script>
</head>
<body onload="init()">

<!--
 <form action=""  id="form1" name="form1"  enctype="multipart/form-data" >
 -->
<form action=""  id="form1" name="form1"  >

<input type="hidden" value="" id="treeNodeId" />

 <table cellpadding="0" cellspacing="1" class="servicesT">
  <tr>
   <th class="formTitle" colspan="99">
    <span>上传素材</span>  
   </th>
  </tr>
  <tr>
   <td class="td_label">选择素材分类:</td>
   <td class="td_input">
    <select id="sel_material_type"   onchange="selectOptionVal(this.id)"  class="e_select" onfocus="this.className='e_selectFocus'" onblur="this.className='e_select'" >
     <option id="ad_id" value="-1">请选择...</option>
     <c:forEach items="${mKindList}" var="materialBean">
      <option  value="${materialBean.id }">${materialBean.name }</option>
     </c:forEach>
    
    <!--
    <option value="0" >文字</option>
    <option value="1" >图片</option>
    <option value="2" >视频</option>
    <option value="3" >压缩包</option>
     -->
    </select>  
   </td>
   <td class="td_label">选择素材类型:</td>
   <td class="td_input">
    <select id="sel_postion_type"  onchange="selectOptionVal(this.id)"  class="e_select"  onfocus="this.className='e_selectFocus'"  onblur="this.className='e_select'" >
     <option id="ad_id" value="-1">请选择...</option>
     <c:forEach items="${mTypeList}" var="materialBean">
      <option  value="${materialBean.id }">${materialBean.name }</option>
     </c:forEach>
    <!--
     <option value="1" >标清</option>
     <option value="2" >高清</option>
    -->
    </select>  
   </td>
   <!-- <td class="td_label">选择广告位:</td>
   <td class="td_input">
    <select  id="sel_postion_id" onchange="selectOptionVal(this.id)"   class="e_select"  onfocus="this.className='e_selectFocus'" onblur="this.className='e_select'" >
     <option id="ad_id" value="-1">请选择...</option>
     <c:forEach items="${pNameList}" var="positionBean">
      <option  value="${positionBean.id }">${positionBean.positionNameCn }</option>
     </c:forEach>
    
     <option id="ad_id" value="1">换台广告</option>
     <option id="ad_id" value="2">音量广告</option>
     <option id="ad_id" value="3">频道列表广告</option>
     <option id="ad_id" value="4">循环播放广告</option>
     <option id="ad_id" value="5">菜单广告</option>
    
    </select>  
   </td>  -->
  </tr>
  <tr>
   
   <td class="td_label">选择广告位:</td>
   <td class="td_input"><select  id="sel_postion_id" onchange="selectOptionVal(this.id)"   class="e_select"  onfocus="this.className='e_selectFocus'" onblur="this.className='e_select'" >
     <option id="ad_id" value="-1">请选择...</option>
     <c:forEach items="${pNameList}" var="positionBean">
      <option  value="${positionBean.id }">${positionBean.positionNameCn }</option>
     </c:forEach>
    <!--
     <option id="ad_id" value="1">换台广告</option>
     <option id="ad_id" value="2">音量广告</option>
     <option id="ad_id" value="3">频道列表广告</option>
     <option id="ad_id" value="4">循环播放广告</option>
     <option id="ad_id" value="5">菜单广告</option>
     -->
    </select> </td>
    <td class="td_label">选择文件:</td>
   <td class="td_input">
    <input title="浏览..." value=""  id="file_id" name="upload" class="e_inputfile" onfocus="this.className='e_inputFocusfile'" onblur="this.className='e_inputfile'" type="file" />  </td>
     </tr>
  <tr>
   <td class="td_labela">选择类型:<br /><br />(大类别包括多个小类别)</td>
   <td colspan="5" class="td_inputaa" valign="top">
   <div id="tree" class="tree"  ></div>
  
   
   </td>
     </tr>
  
  <tr>
   <td class="formBottom" colspan="99">
    <input name="Submit"
    type="button"
    title="上传"
    class="b_next"
    value=""
    onclick="checkFile()"
    />
     
             </td>   
               
  </tr>
 </table>
</form>
</body>
</html>


5.2 struts.xml配置文件代码

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <!-- global -->
 <include file="struts-default.xml" />
 <include file="struts-plugin.xml" />

 <include file="struts/struts-playItem.xml" />
 <include file="struts/struts-twowayAdvert.xml" />

 <constant name="struts.enable.DynamicMethodInvocation" value="false" />

 <!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->
 <constant name="struts.i18n.encoding" value="UTF-8" />
 
 <!-- 配置国际化相关信息 -->
 <constant name="struts.custom.i18n.resources" value="struts.messageResource" />

 <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->
 <constant name="struts.serve.static.browserCache" value="false" />

 <!-- 开发模式下使用,这样可以打印出更详细的错误信息
 <constant name="struts.devMode" value="true" /> -->
 <constant name="struts.devMode" value="false" />
 
 <!-- 上传的文件存放目录 -->
 <constant name="struts.multipart.saveDir" value="tmp"/>
 
 
 <!-- 参数struts.multipart.maxSize 为文件尺寸   默认是2M,如果不进行配置上传超出2M,会抛出错误 -->
 <constant name="struts.multipart.maxSize" value="2000000" />

 <!-- 把action对象交给spring创建 -->
 <constant name="struts.objectFactory" value="spring" />
 
 
 <!-- 如果不是用action作为扩展名,则需要在这个地方配置扩展名,否则映射不上 -->
 <constant name="struts.action.extension" value="do" />
 

 <package name="material" namespace="/material" extends="struts-default">
  <action name="listMaterial" class="materialAction" method="getTypes" />
  <action name="listMaterialType" class="materialAction" method="listMaterialType" />
  <action name="addMaterialType" class="materialAction" method="addMaterialType" />
  <action name="delMaterial" class="materialAction" method="deleteMaterialType" />
  <action name="updateMaterial" class="materialAction" method="updateMaterialType" />
  <action name="getMaterialTypePath" class="materialAction" method="getMaterialTypePath" />
  <action name="findMaterial" class="materialAction" method="findMaterial" >
   <result name="success" >/page/material/materialFind.jsp</result>
  </action> 
  
  <action name="checkFileName" class="materialAction" method="checkFileName" />
  <action name="checkMaterial" class="materialAction" method="uploadMaterial" />
  <action name="toUploaldFile" class="materialAction" method="showUploaldMaterial" >
   <result name="success">/page/material/add.jsp</result>
   
  </action>
  
  
 </package>
  
</struts>

5.3 action的代码:

public class MaterialAction extends BaseActionSupport<Object> implements ServletRequestAware{
 


  String tempPath = MATERIAL_TEMP_DIR + _SEPARATOR + materialName;
  File dstFile = new File(tempPath);
  
  /**  复制到临时文件夹内 */
  int fileSize;
  try {
   fileSize = FileOperate.copyFile2FileSize(this.upload, dstFile);

 

 

 

BaseActionSupport

 

package com.dvnchina.itv.advert.action;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;

import com.dvnchina.itv.advert.utils.GenericsUtil;
import com.opensymphony.xwork2.ActionSupport;

public class BaseActionSupport<T> extends ActionSupport{
 
 private static final long serialVersionUID = 1510137542622373146L;
 
 protected final Log log = LogFactory.getLog(getClass());
 
 protected final static String SPE = File.separator;
 
 /**
  * id主键
  */
 protected Long id;
 
 /**
  * 多个id字符串,以"逗号"分割
  */
 protected String ids;
 
 /**
  * 工程的contextPath
  */
 protected String contextPath;
 
 /**
  * extJs的页号
  */
 protected int start;
 
 /**
  * extJs的分页记录
  */
 protected int limit;
 
 /**
  * 页号
  */
 protected int pageNo;
 
 /**
  * 每页记录数
  */
 protected int pageSize;
 
 /**
  * 表格查询参数
  */
 protected String query;
 
 
 /**
  * json格式数据
  */
 protected String dataJson;
 
 /**
  * 上传的文件
  */
 protected File upload;
 
 /**
  * 上传文件类型属性
  */
 protected String uploadContentType;
 
 /**
  * 上传的文件名
  */
 protected String uploadFileName;
 
 @SuppressWarnings("unchecked")
 protected Class clazz;

 @SuppressWarnings("unchecked")
 protected Class getClazz() {
  return clazz;
 }
 
 @SuppressWarnings("unchecked")
 public BaseActionSupport() {
  Class genericClass = GenericsUtil.getGenericClass(getClass());
  clazz = genericClass;
 }
 
 /**
  * render Text
  */
 public void renderText(String content) {
  try {
   HttpServletResponse response = ServletActionContext.getResponse();
   response.setContentType("text/plain");
   response.setCharacterEncoding("UTF-8");
   PrintWriter out = response.getWriter();
   out.print(content);
   out.flush();
   out.close();
   
  } catch (IOException e) {
   log.error(e);
  }
 }

 /**
  * render HTML
  */
 public void renderHtml(String content) {
  HttpServletResponse response = null;
  PrintWriter out  = null;
  try {
   response = ServletActionContext.getResponse();
   response.setContentType("text/html");
   response.setCharacterEncoding("UTF-8");
   out = response.getWriter();
   out.print(content);
   out.flush();
  } catch (IOException e) {
   log.error("输出提示信息时出现异常",e);
  } finally{
   if (out!=null) {
    out.close();
   }
  }
 }

 /**
  * render XML
  */
 public void renderXML(String content) {
  try {
   HttpServletResponse response = ServletActionContext.getResponse();
   response.setContentType("text/xml");
   response.setCharacterEncoding("UTF-8");
   PrintWriter out = response.getWriter();
   out.print(content);
   out.flush();
   out.close();
   
  } catch (IOException e) {
   log.error(e);
  }
 }

 /**
  * render json
  */
 public void renderJson(String content) {
  try {
   HttpServletResponse response = ServletActionContext.getResponse();
   response.setContentType("text/json");
   response.setCharacterEncoding("UTF-8");
   PrintWriter out = response.getWriter();
   out.print(content);
   out.flush();
   out.close();
  } catch (IOException e) {
   log.error(e.getMessage(), e);
  }
 }
 
 public PrintWriter getWriter(String encoding) throws IOException{
     HttpServletResponse response = ServletActionContext.getResponse();
     response.setContentType("text/html");
     response.setCharacterEncoding(encoding);
     PrintWriter out = response.getWriter();
     return out;
 }

 /**
  * 取得request
  * @return
  */
 public HttpServletRequest getRequest(){
  HttpServletRequest request = ServletActionContext.getRequest();
  return request;
 }
 
 /**
  * 取得MultipartRequest
  * 上传文件使用
  * @return
  */
 public MultiPartRequestWrapper getMutipartRequest(){
  MultiPartRequestWrapper mulRequest = (MultiPartRequestWrapper) ServletActionContext.getRequest();
  return mulRequest;
 }
 
 /**
  * get userName from session
  */
 public static String getUserNameFromSesssion() {
  String name = (String) ServletActionContext.getRequest().getSession().getAttribute("username");
  return name;
  
 }
 
 /**
  * get conf from configuration.properties
  */
 public static String getPropertiesValue(String key) {
//  PropertiesUtil.init("configuration.properties");
//  String value = PropertiesUtil.getProperty(key,"");
//  return value;
  return null;
 }
 
 /**
  * 页面跳转
  */
 public String forWard() throws Exception {
  return SUCCESS;
 }
 
 /**
  * get project realPath
  */
 public String getRealPath() {
  HttpServletRequest request = (HttpServletRequest) ServletActionContext.getRequest();
  String path = request.getSession().getServletContext().getRealPath("/");
  return path;
 }
 
 /**
  * 获取Response
  * @return
  */
 public HttpServletResponse getResponse(){
  HttpServletResponse response = ServletActionContext.getResponse();
  return response;
 }

 public String getContextPath() {
  return contextPath;
 }

 public void setContextPath(String contextPath) {
  this.contextPath = contextPath;
 }

 public void setQuery(String query) {
  this.query = query;
 }

 public Long getId() {
  return id;
 }

 public void setId(Long id) {
  this.id = id;
 }

 
 public int getStart() {
  return start;
 }

 public void setStart(int start) {
  this.start = start;
 }

 public int getLimit() {
  return limit;
 }

 public void setLimit(int limit) {
  this.limit = limit;
 }

 public String getDataJson() {
  return dataJson;
 }

 public void setDataJson(String dataJson) {
  this.dataJson = dataJson;
 }

 public String getIds() {
  return ids;
 }

 public void setIds(String ids) {
  this.ids = ids;
 }

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

 

分享到:
评论

相关推荐

    广告项目:(3)FTP文件上传、Freemarker、文件操作等等工具类

    NULL 博文链接:https://chennaid2.iteye.com/blog/1507737

    软件开发类投标项目全套解决方案模板

    (1) 项目汇报文件 210 (2) 测试方案 210 4.1.9.2.5. 测试人员名单 211 4.1.10 本期项目完成交付后,技术服务计划、维护、承诺及费用 212 4.1.10.1. 概述 212 4.1.10.2. 服务内容 213 1. 咨询服务 213 2. ...

    Andriod studio 3.5项目源码之天气应用

    共24个demo项目 文件太大 分开上传 如下: 1.雷达扫描图 2.美女拼图游戏 3.仿饿了么点餐 4.仿京东App 5.在线音乐播放器 6.仿哔哩哔哩B站 7.地图拖拽区域检测效果 8.手写签名 9.语音识别 10.自定义图形库 11.绘图...

    asp.net(C#)读取文件夹和子文件夹下所有文件,绑定到GRIDVIEW并排序

    靠,俺没资源分了,想下东西都下不了,为此,我就在我项目中提取了2个文件上传,是对文件的管理。如UploadFiles是总的上传文件夹,下面有Pictures(普通图片)、NewsPic(新闻图片)、Adv(广告图片)、Movies (视频)、Other...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    广告排行广告管理系统(JS文件管理器) 1.2 Build 090403-ad.rar

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...

    [广告排行]广告管理系统(JS文件管理器) 1.2 Build 090403_ad.rar

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...

    (手动杀毒工具)PowerTool-v3.2

    26. 上传文件在线扫描病毒 27. 查看和摘除用户层的钩子 28. 查看和结束内核线程 29. 关机回调的清除 30. 查看和摘除mini文件驱动 31. 系统恢复功能(检测项目包括注册表关键部位,已安装的杀毒软件,AutoRun文件,...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    PowerTool系统维护工具 更好用的补丁工具绿色

    26. 上传文件在线扫描病毒 27. 查看和摘除用户层的钩子 28. 查看和结束内核线程 29. 关机回调的清除 30. 查看和摘除mini文件驱动 31. 系统恢复功能(检测项目包括注册表关键部位,已安装的杀毒软件,AutoRun文件,...

    毕设项目基于ARM-Linux的模拟电梯系统源码+项目说明.zip

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合...

    TwilightBackEnd_BC_201806:暮光网项目后端(node+express+multer+mongoose)

    会员登陆注册,会员后台管理,会员积分,网站后台管理,评论点赞,收藏,网站数据录入,多媒体文件上传,多媒体文件在线播放,站内模糊搜索项目数据库表:advertisements:广告数据表,bannerlists:轮播图数据表,...

    FFS上传环境检测工具 v1.0.rar

    FFS上传环境服务器检测程序其实是一款探针程序,专用于 想做网盘的用户,能够检测出服务器的上传环境配置,在你 打算购买某虚拟主机或服务器之前,或者准备部署网盘程序, 使用此程序检测服务器上传环境,可以...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    java课程设计题目:广告墙

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合...

    基于Spark-Hadoop的户外广告识别系统 用户通过拍照上传广告图片,服务端识别出是哪张广告并把相关的信息+源代码+文档说明

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合...

    Andriod studio 3.5项目源码之仿头条App

    共24个demo项目 文件太大 分开上传 如下: 1.雷达扫描图 2.美女拼图游戏 3.仿饿了么点餐 4.仿京东App 5.在线音乐播放器 6.仿哔哩哔哩B站 7.地图拖拽区域检测效果 8.手写签名 9.语音识别 10.自定义图形库 11.绘图...

    POSER 7精简破解版[共两个文件已上传][1/2]

    4、去掉了所有帮助文件和示例文件 5、去掉了LipSync模块,该模块目前只支持Poser6、7系列人物。 6、POSER 7 精简绿色版建造人物,需要安装人物模型,请用户自行选择。另外,需要简体中文的用户与本公司联系。

Global site tag (gtag.js) - Google Analytics