PHP实现多文件上载的系统程序

 更新时间:2016年11月25日 16:14  点击:1934
<?php
//多文件上载系统完整版
include("../include/common.inc");
$title = "多个文件的上载程序";
include("../include/header.inc");
//定义允许上载文件的数目
define("UPLOAD_NO", 10);
echo("<p align='center'><font size='4' color='#000080'>欢迎您!<br>一次可以最多上载".UPLOAD_NO."个文件<br><HR>n");
if($REQUEST_METHOD!="POST"){
echo("<form enctype="multipart/form-data" method=post>n");
echo("<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="3000000">n");
for($i=1;$i<=UPLOAD_NO;$i ){
echo("<input type=file name=infile$i> ");
if($i%2==0)
echo("<br>n");
}
echo("<br><br><input type="checkbox" name="overload" value="ON"></font> <font color='#ff0000'>是否覆盖已经存在的文件?</font>");
echo("<br><br><input type=submit value=上载></form>n");
}
else{
//处理上载
$noinput = true;
for($i=1;$noinput&&($i<=UPLOAD_NO);$i ){
if(${"infile".$i}!="none") $noinput = false;
}
if($noinput){
echo("<font size='4' color='#000080'>没有选定的文件,返回重试</font>");
exit();
}
echo("<p align='center'><font size='4' color='#000080'>您选中的文件已经成功地上载到服务器的临时目录!</font><br>");
echo("<table border='1' width='84%' height='52' bordercolorlight='#008080' bordercolordark='#008080'>
<tr>
<td width='14%' bgcolor='#008000' height='21'><font color='#FFFFFF'>文件号</font></td>
<td width='52%' bgcolor='#008000' height='21'><font color='#FFFFFF'>文件名称</font></td>
<td width='34%' bgcolor='#008000' height='21'><font color='#FFFFFF'>文件大小</font></td>
</tr>");
for($i=1;$i<=UPLOAD_NO;$i ){
$just=${"infile".$i."_size"};
$fp_size[i] = $just;
J2EE是很好的。作为开发环境,如果采用经典配置:JBuilder Weblogic Oracle,自是得心应手,但价格是惊人的。此配置主要是针对大型或超大型应用,硬件要求也很高,针对国内以中小型应用为主的现况,不作推荐。
 
虽然国内开发者早已习惯,但笔者以为还是防患于未然,应尽早加入OpenSource行列,促进国内软件业的发展。
 
本文所推荐的Eclipse、JBoss、MySQL均是名气很高的开源软件,并且非常实用。
 
1、JDK:到http://java.sun.com下载,推荐使用J2SDK1.4.X
2、JBoss:到http://www.jboss.org下载,笔者使用jboss-3.0.4_tomcat-4.0.6
3、MySQL:到http://www.mysql.com下载,笔者使用mysql-4.0.13,另须下载MySQL Control Center(图形化管理工具),到http://sourceforge.net/projects/mmmysql/下载MySQL的JDBC驱动程序,如mm.mysql-2.0.14-you-must-unjar-me.jar
4、Eclipse:到http://www.eclipse.org下载,最新版本为3.0M8,如果是新手推荐下载2.1.2和中文包(2.1.2_Translations)。到http://www.objectlearn.com/下载lomboz(此插件开发J2EE必需),需要注意的是lomboz的版本必须与eclipse版本一致,否则不正常。
 
环境设置(以Windows 2000下D盘作根目录为例):
1、JDK的安装配置在此不再说明。
2、将JBoss解压到D:,将MySQL的JDBC驱程包中的mm.mysql-2.0.14-bin.jar解压到D:jboss-3.0.4_tomcat-4.0.6serverdefaultlib中,再将D:jboss-3.0.4_tomcat-4.0.6docsexamplesjca目录下的mysql-service.xml拷贝到D:jboss-3.0.4_tomcat-4.0.6serverdefaultdeploy目录下,找到相应段落并作如下修改:

lgx522@21cn.com)
程序如下:
  $file_name = "info_check.exe";
  $file_dir = "/public/www/download/";
  if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
  echo "文件找不到";
  exit;
  } else {
  $file = fopen($file_dir . $file_name,"r"); //打开文件
  //输入文件标签
  Header("Content-type: application/octet-stream");
  Header("Accept-Ranges: bytes");
  Header("Accept-Length: ".filesize($file_dir . $file_name));
  Header("Content-Disposition: attachment; filename=" . $file_name);
  //输出文件内容
  echo fread($file,filesize($file_dir . $file_name));
  fclose($file);
  exit;}
  而如果文件路径是"http"或者"ftp"网址的话,则源代码会有少许改变,程序如下:
  $file_name = "info_check.exe";
  $file_dir = "www.easycn.net/";
  $file = @ fopen($file_dir . $file_name,"r");
  if (!$file) {
  echo "文件找不到";
  } else {
  Header("Content-type: application/octet-stream");
  Header("Content-Disposition: attachment; filename=" . $file_name);
  while (!feof ($file)) {
  echo fread($file,50000);
  }
  fclose ($file);
  }
  这样就可以用PHP直接输出文件了
<?
if(!$session && !$scid) {
$session = md5(uniqid(rand()));
SetCookie("scid", "$session", time() 14400);
} /* last number is expiration time in seconds, 14400 sec = 4 hrs */
class Cart {
function check_item($table, $session, $product) {
$query = "SELECT * FROM $table WHERE session='$session' AND product='$product' ";
$result = mysql_query($query);
if(!$result) {
return 0;
}
$numRows = mysql_num_rows($result);
if($numRows == 0) {
return 0;
} else {
$row = mysql_fetch_object($result);
return $row->quantity;
}
}
function add_item($table, $session, $product, $quantity) {
$qty = $this->check_item($table, $session, $product);
if($qty == 0) {
$query = "INSERT INTO $table (session, product, quantity) VALUES ";
$query .= "('$session', '$product', '$quantity') ";
mysql_query($query);
} else {
$quantity = $qty;
$query = "UPDATE $table SET quantity='$quantity' WHERE session='$session' AND ";
$query .= "product='$product' ";
mysql_query($query);
}
}
function delete_item($table, $session, $product) {
$query = "DELETE FROM $table WHERE session='$session' AND product='$product' ";
mysql_query($query);
}
function modify_quantity($table, $session, $product, $quantity) {
$query = "UPDATE $table SET quantity='$quantity' WHERE session='$session' ";
$query .= "AND product='$product' ";
mysql_query($query);
}
function clear_cart($table, $session) {
$query = "DELETE FROM $table WHERE session='$session' ";
mysql_query($query);
}
function cart_total($table, $session) {
$query = "SELECT * FROM $table WHERE session='$session' ";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0) {
while($row = mysql_fetch_object($result)) {
$query = "SELECT price FROM inventory WHERE product='$row->product' ";
当WML页面下载到WAP设备后,它将保存在WAP设备内存中一段时间,直到这个时间过期。在这之后,页面将从服务器下载,而不是从WAP设备的缓存读取。这个过程被称做Cache。
但是有些时候不想让页面从缓存中读取,而是从服务器端读取。一个典型的例子就是当服务器的内容不断在更新的时候,通过在HTTP头中加入一定的cache信息,来告诉WAP设备该页面将不存储在缓存中。
可以在服务器端生成HTTP头,或者使用PHP、ASP、Perl或者其他服务端开发语言。这一行不能被包括在页面里,既然是HTTP的信息头,就不是WML元素。
对于静态页面,或许没有使用服务器端脚本语言,许多浏览器支持META标签来控制浏览器的Cache。看本部分的最后的例子。
将下面代码加入到HTTP头中,页面将马上过期:
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: DD. month YYYY HH:MM:SS GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
第一行告诉微型浏览器,页面已经过期一段时间了。第二行告诉浏览器页面最后一次修改的时间。DD应该换成当天的日期,month YY HH MM SS等等类推。第三行和第四行有同样的效果。告诉浏览器页面不被Cache(第三行适用于 HTTP 1.1,第四行适用于HTTP 1.0)。
下面的是PHP的一个例子:
<?
// set the correct MIME type
     header("Content-type: text/vnd.wap.wml");
// expires in the past
     header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// Last modified, right now
     header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
// Prevent caching, HTTP/1.1
     header("Cache-Control: no-cache, must-revalidate");
// Prevent caching, HTTP/1.0
     header("Pragma: no-cache");
   ?>
下面是使用WebClasses(VB)的例子。使用"Response.Expires=-1",防止Cache。
 Private Sub WebClass_Start()
      'Set correct MIME type
      Response.ContentType = "text/vnd.wap.wml"
     
      'Make sure no caching
      Response.Expires = -1
      Response.AddHeader "Pragma", "no-cache"
      Response.AddHeader "Cache-Control", "no-cache, must-revalidate"
[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • BootStrap栅格系统、表单样式与按钮样式源码解析

    这篇文章主要为大家详细解析了BootStrap栅格系统、表单样式与按钮样式源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-23
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • python实现学生通讯录管理系统

    这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15