php中文件缓存实现程序代码

 更新时间:2016年11月25日 16:22  点击:1695
文件缓存就是指把缓存生成一个文件,这个文件可以是php,txt等等文件,当我下载访问时就来判断访问上次生成时间,如果超过了我们指定的时间再重新生成一次,否则就直接调用缓存文件,这样就可以减少了对mysql数据库的查询了。

文件缓存原理

1.把需要缓存的数据通过serialize函数序列化后直接保存到文件。在需要使用缓存数据的时候,通过反序列化读入文件内容并复制给需要的变量,然后使用。不经常改动的数据可以写入缓存文件。


文件缓存实例

index.php

 代码如下 复制代码

define('CACHE_ROOT','./');
 include_once('./cache.func.php');
 $file = 'qzp';
 $cacheFile = getCacheFileByID($file,'info/');
 
 print_R(readCache($cacheFile));
 
 $info = array(
      'username'=>'qzp',
      'area_name'=>'admin',
      'mp_name'=>'1234',
      'gh_name'=>'5678');
writeCache($cacheFile,$info);

cache.func.php文件

 function arrayeval($array, $level = 0) {
    $space = '';
    for($i = 0; $i <= $level; $i++) {
        $space .= "t";
    }
    $evaluate = "Arrayn$space(n";
    $comma = $space;
    foreach($array as $key => $val) {
        $key = is_string($key) ? '''.addcslashes($key, ''\').''' : $key;
        $val = !is_array($val) && (!preg_match("/^-?[1-9]d*$/", $val) || strlen($val) > 12) ? '''.addcslashes($val, ''\').''' : $val;
        if(is_array($val)) {
            $evaluate .= "$comma$key => ".arrayeval($val, $level + 1);
        } else {
            $evaluate .= "$comma$key => $val";
        }
        $comma = ",n$space";
    }
    $evaluate .= "n$space)";
    return $evaluate;
}
 
function getCacheFileByID($id,$pre='info/',$md5=true){
 if($md5){
  $md5id = md5($id);
  return CACHE_ROOT.'/'.$pre.substr($md5id,0,2).'/'.substr($md5id,2,2).'/'.$id;
 }else{
  return CACHE_ROOT.'/'.$pre.$id;
 }
}
 
function readCache($filename,$time=0){
 if($datas = @file_get_contents($filename)){
  $datas = unserialize($datas);
  if($time < 1 || (time() - $datas['time'] < $time)){
   return $datas['data'];
  }
 }
 return false;
}
 
function writeCache($filename,$data){
 makeDir(dirname($filename));
 if($handle = fopen($filename,'w+')){
  $datas = array('data'=>$data,'time'=>time());
  flock($handle,LOCK_EX);
  $rs = fputs($handle,serialize($datas));
  flock($handle,LOCK_UN);
  fclose($handle);
  if($rs!==false){
   return true;
  }
 }
 return false;
}
 
function makeDir($path)
{
 if (! file_exists ( $path )) {
  makeDir ( dirname ( $path ) );
  if (! mkdir ( $path, 0777 ))
  die ( '无法创建文件夹' . $path );
 }
}

把要缓存的文件序列化下存放起来,当使用的时候反序列化回来使用。

使用对PHP模板数据进行缓存的工具smarty。smarty将HTML文件缓存成一个静态的HTML页,需要缓存的模板文件可以使用smarty。
例:

 代码如下 复制代码

<?php
//包含Smarty类库
require('libs/Smarty.class.php');
 
//创建Smarty类的对象
$smarty = new Smarty;
 
//启用缓存
$smarty->caching = true;
 
//指定缓存文件保存的目录
$smarty->cache_dir = "./cache/";
 
//也会把输出保存
$smarty->display('index.tpl')
?>

在php中缓存分为很多种类型如,内存缓存,文件缓存,页面缓存本文章要来讲述关于php中内存缓存的一些方法,下面我们介绍Memcached缓存和php自带的APC缓存方法。

1.Memcached缓存。
memcached是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度。memcached 使用了“Key=>Value”方式组织数据。可以允许不同主机上的多个用户同时访问这个缓存系统,一般用于大型网站使用。memcached使用内存缓存数据,所以它是易失的,当服务器重启,或者memcached进程中止,数据便会丢失,所以 memcached不能用来持久保存数据。

过php_memcache的人都会觉得 PHP内存缓存是一个很复杂的东西,其实不然。
memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。
这里介绍memcached在WIN32下的配置及其使用。

一、PHP内存缓存的配置(WIN32环境)

1、下载php_memcache.rar,请从附件下载。

     解压压缩包:php_memcache.rar

     php_memcache.rar压缩包里主包含的文件有:

     /memcached-1.2.1-win32/memcached.exe
     /php_memcache/php_memcache.dll

2、打开命令提示符,指向到memcached.exe所在路径,运行memcached.exe -d start。

3、将php_memcache.dll文件拷贝到PHP的动态文件库的文件夹下。

4、在php.ini文件中加入一行extension=php_memcache.dll。

5、重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!


例:

 代码如下 复制代码

<?php
//包含 memcached 类文件
require_once('memcached-client.php');
 
//选项设置
$options = array(
 'servers' => array('www.hxsd.com:11211'),//memcached 服务的地址、端口
 'debug' => true,//是否打开debug
 'compress_threshold' => 10240,//超过多少字节的数据时进行压缩
 'persistant' => false//是否使用持久连接
 );
 
//实例化memcached对象
$memcached = new memcached($options);
 
$sql = 'SELECT * FROM table1';
$key = md5($sql);
 
//如果在memcached中没有缓存数据,把缓存数据写入memcached
if(!($datas = $memcached->get($key)))
{
 $conn = mysql_connect('localhost', 'hxsd', '123456');
 mysql_select_db('hxsd');
 $result = mysql_query($sql);
 while($row = mysql_fetch_object($result))
 {
  $datas[] = $row;
 }
 //将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。
 $memcached->add($key, $datas);
}
else
{
 //直接使用memcached中的缓存数据$datas
}
?>

内存缓存二

APC、EC、Zend加速器的比较

一、APC

APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。

主页是 http://pecl.php.net/package/apc

php帮助手册页面: http://cn.php.net/apc


APC是个优化器,自安装之日起,就默默地在后台为您的PHP应用服务了.您的所有PHP代码会被缓存起来. (针对php opcode)

另外,APC可提供一定的内存缓存功能.但是这个功能并不是十分完美,有报告说如果频繁使用APC缓存的写入功能,会导致不可预料的错误.如果想使用这个功能,可以看看apc_fetch,apc_store等几个与apc缓存相关的函数.

安装:

 代码如下 复制代码

# pecl install APC

配置:(/etc/php.inc)

 代码如下 复制代码

extension=apc.so

[apc]

 代码如下 复制代码

apc.enabled = 1

apc.shm_segments = 1

apc.shm_size = 30

apc.optimization = 0

apc.ttl = 7200

apc.user_ttl = 7200

apc.num_files_hint = 1000

apc.mmap_file_mask = /tmp/apc.XXXXXX

本文章总结了两个常用的手机归属地查询程序,一种是利用api调用第三方接口实现,一种是利用我们自己的手机数据库查询然后再判断手机号归属地查询.

先来看一个调用第三方法网站的一个程序

主要使用curl实现,需要开启php对curl的支持.

如果你是windows系统在你的的php.ini文件的设置,找到php_curl.dll,并取消前面的分号注释就行了,如下所示:
//取消下在的注释

extension=php_curl.dll

如果您是在Linux下面,那么,您需要重新编译您的PHP了,编辑时,您需要打开编译参数,在configure命令上加上“–with-curl”参数。

然后重启apache

 代码如下 复制代码

<?php
header("Content-Type:text/html;charset=utf-8");
if (isset($_GET['number'])) {
$url = 'http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo';
$number = $_GET['number'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "mobileCode={$number}&userId=");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
$data = simplexml_load_string($data);
if (strpos($data, 'http://')) {
echo '手机号码格式错误!';
} else {
echo $data;
}
}
?>
<form action="mobile.php" method="get">
手机号码: <input type="text" name="number" /> <input type="submit" value="提交" />
</form>

实例二
这个实例利用了手机数据库,把文件保存在本地然后查找数据库再来差别,但是你得经常更新数据库才行哦。

 代码如下 复制代码

<html>
<head>
<title>手机号码归属地查询</title>
</head>
<style type="text/css">
 #main{
 height:100%;
 }
 #left {
 float:left;
 height:100%;
 width:10%;
 float:left;
 }
 #right{
 float:left;
 height:100%;
 width:100$;
 }
</style>
<body>
<?php
require ('function.php');
$pwd="xiaolin"; //密码,请修改
if (!isset($_GET["action"]) ){
header("Location:manage.php?action=login");

}
if ($_GET["action"]=="login"){

?>
<form action="manage.php?action=loginin" method="POST">
<p>请输入密码:</p>
<p><input type="password" value="" name="pwd"></p>
<p><input type="submit" value="登录"></p>
</form> 
<?php
}elseif ($_GET["action"]=="loginin"){
 $repwd=$_POST["pwd"];
 if ($repwd != $pwd){
 echo "Sorry,密码错误~!";
 }else {
 $_SESSION["flag"]=true;
 leftnav();
 }
 
}elseif ($_GET["action"]== "info" ){
 leftnav();
 getinfo();
?>
</div>
 </div> 
<?php
}elseif ($_GET["action"]=="edit"){
leftnav();
?>
<form action="manage.php?action=editp" method="POST">
<p>手机号码:<input type="text" name="num">(至少7位)</p>
<p>详细资料:<input type="text" name="info"></p>
<input type="submit" value="更新">
</form> 
 
<?php
 
}elseif ($_GET["action"]== "loginout"){
 if (isset($_SESSION["flag"])){
 unset($_SESSION["flag"]);
 session_destroy();
 }
 echo "<p><a>登出</a></p><p><a href='manage.php'>返回</a></p>";


}elseif ($_GET["action"]=="editp"){
 leftnav();
 $num=$_POST["num"];
 $info=$_POST['info'];
 if (!empty($num) && !empty($info) && strlen($num)>=7 ){
 update($num,$info);
 }else{
 die ("不得为空!");
 }
}elseif ("about"==$_GET["action"]){
 leftnav();
 showabout();
 }
?>
</body>
</html>

index.php

<html>
<head>
<title>手机号码归属地查询</title>
</head>
<body>
<form action="index.php?action=search" method="POST">
<p>请输入你要查询的手机号码:<input type="text" name="phone"></p>
<p><input type="submit" value="查询手机号码归属地"></p></p>
</form>
<?php
if (isset($_GET["action"])){
if ("search"==$_GET["action"] ){
require ('function.php');
$phone=(isset($_POST["phone"]))?$_POST["phone"]:die ("请返回");
echo "你查询的手机号码<font color=red>".$phone."</font>属于<font color=red>".getphone($phone)."</font>";

}
?>
</body>
</html>

function.php函数

<?php

session_start();
   
function update($num,$info){
 $dbpath="xiaolin/";
 $len=strlen($num);
 if ( $len < 7 ){
 return "手机号码最低7位哦";
 }
 $par="[0-9]";
 for ($i=0;$i<$len;$i++){
  if(!ereg($par,substr($num,$i,1) ) ){
  return "手机号码只能为数字";
  }
 }
 $sunum=scandir($dbpath); //得到支持的手机号码前缀
  array_splice($sunum,0,1); //把当前目录取消
  array_splice($sunum,0,1); //把上一级目录去掉
 $sub=substr($num,0,3); //取得该号码的前三位
 if (in_array($sub,$sunum) ){
   $num1=ltrim(substr($num,3,4),"0");
  $search=file($dbpath.$sub);
  $tmp=$search[$num1];
  $search[$num1]=$num1.'='.$info."n";
  $fp1=fopen($dbpath.$sub.'1','wb+');
for ($i=0;$i<10000;$i++){
 //$phone=str_pad($i,4,"0",STR_PAD_LEFT);
 //$phoneinfo="";
 //$phoneinfo.=$phone."=";
 //$phoneinfo=(isset($search[$i]))?$search[$i]:"";
 //$phoneinfo.="n";
 fwrite($fp1,$search[$i]);
}
fclose($fp1);
 echo "$num 已更新";
 }else{
 die ("暂不支持$sub");
 }
 }
function getphone($phone){
 $dbpath="xiaolin/";
 $len=strlen($phone);
 if ( $len < 7 ){
 return "手机号码最低7位哦";
 }
 $par="[0-9]";
 for ($i=0;$i<$len;$i++){
  if(!ereg($par,substr($phone,$i,1) ) ){
  return "手机号码只能为数字";
  }
 }
 $sunum=scandir($dbpath); //得到支持的手机号码前缀
  array_splice($sunum,0,1); //把当前目录取消
  array_splice($sunum,0,1); //把上一级目录去掉
 $sub=substr($phone,0,3); //取得该号码的前三位
 if (in_array($sub,$sunum) ){
   $num=ltrim(substr($phone,3,4),"0");
  $search=file($dbpath.$sub);
  $tmp=$search[$num];
  $result=substr($tmp,strpos($tmp,"=")+1,strlen($tmp)-strpos($tmp,"=")-2); //处理数据
  return (strlen($result)>1)?$result:"无数据";
 }else{
 return "暂不支持$sub";
 }
}

function check(){
 if (!isset($_SESSION["flag"]) ){
 die ("<p>请<a href='manage.php?action=login'>登录!</a></p>"); 
 }elseif ($_SESSION["flag"] != true){
 die ("<p>请<a href='manage.php?action=login'>登录!</a></p>"); 
 }
}

function getinfo(){
check();
 $nums=array("130","131","132","133","134","135","136","137","138","139","150","151","153","155","156","157","158","159");
 $counts="";
 for($j=0;$j<count($nums);$j++){
  $id=$j;
  if ($id >= count($nums) ){ die ("OVER"); }
   $nownum=$nums[$id]; //当前的号码段
  $dbpath="xiaolin/";
  $fp=fopen("xiaolin/$nownum",'r');
  while(!feof($fp)){
   $line=fgets($fp);
   $tmp=explode("=",$line);
   $num1[$tmp[0]]=substr($line,strpos($line,"=")+1,strlen($line)-strpos($line,"=")-2);
  }
  fclose($fp);
 $flag=0;
  for($i=0;$i<10000;$i++){
   $ser=str_pad($i,4,"0",STR_PAD_LEFT);
   if(!strlen($num1[$ser]) ==0 ){
   ++$flag;
  }
 }
 $counts+=$flag;
  echo "$nownum:段记录$flag</p>";
}
 echo "总计$counts";}
 function leftnav(){
  check();
?>
<div>

<div id="right">

<?php
}
function showabout(){
 echo "<p>手机号码归属地查询</p>
";
 }
?>

搞了半天终于把CKEditor搞了个明明白白,配合ckfinder实现了图片的上传,具体步骤给需要的同志们。 1、建立项目ckeditor,将ckeditor和ckfinder解压缩放到项目下

两个东东的下载地址分别为:

ckeditor:  http://ckeditor.com/download/

ckfinder:  http://ckfinder.com/download

项目目录结构为:

  ckeditor

      ---ckeditor

      --ckfinder

      --test.php 用来测试的PHP文件

2、找到ckfinder目录下的config.php文件打开

  1)定位到CheckAuthentication方法,默认此方法只有返回值false,这样是不允许上传文件到服务器的,需要将其进行修改,函数内已经用英文注明,不建议直接改为false,因为那样会不安全,什么都会上传了,所以用session来处理一下,就成了下面的样子

 代码如下 复制代码

session_start();

function CheckAuthentication()

    if(isset($_SESSION['UseEditor']))//这个随便命名就可以了

    return true;

    else

    return false;

}

2) 配置上传文件位置,

默认ckfinder会把上传文件放到根目录下的ckfinder/userfiles/images文件夹下,我们可以修改成自己的项目目录下,在项目下建立upfiles文件夹,在config.php中找到baseUrl并且修改为:

 代码如下 复制代码

$baseUrl = '/ckeditor/upfiles/';

 这样上传文件会保存到upfiles下的images文件夹。当然,你也可以根据需要设置不同的上传文件夹,至于怎么传值给他以判断上传文件夹,当然是通过session了。

3、修改上传文件名,默认系统以原有名字命名,所以我们重新命名文件。方法为:打开ckfindercoreconnectorphpphp5CommandHandler下FileUpload.php文件

     找到    $sUnsafeFileName  后面加上重命名代码,如下:

 代码如下 复制代码

$sUnsafeFileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(CKFinder_Connector_Utils_Misc::mbBasename($uploadedFile['name']));

//先获取原文件后缀

$sExtension=CKFinder_Connector_Utils_FileSystem::getExtension($sUnsafeFileName);

//重新命名文件

$sUnsafeFileName=date('YmdHis').'.'.$sExtension;

 

4、最后在test.php中使用ckfinder,代码如下:

 代码如下 复制代码

session_start();

$_SESSION[‘UseEditor’]=’ok’;//一定别忘记这个哦,否则没法上传

include_once('ckeditor/ckeditor.php');

   include_once('ckfinder/ckfinder.php');

   $fc = new CKEditor();

   CKFinder::SetupCKEditor($fc,'./ckfinder/');

$fc->editor("content", "<p>Initial value.</p>");

swfupload是一个用来文件上传的组件,对于大文件我们觉得是很不错的,下面我来介绍swfupload配置与使用方法吧。

swfupload对于大文件上传等比较好用,下面以classic form demo为例,简单说明下用法

下载地址:http://code.google.com/p/swfupload/downloads/list

其中 SWFUpload_v250_beta_3_samples.zip 为实例代码,解压后重命名为swfupload,保存到本地主文件夹(nginx+php环境)下,便可以通过

http://localhost/swfupload/demos/ 访问

其中两个文件夹,demos 为客户端的实例,samples 提供了各语言的文件保存代码。

切换到 http://localhost/swfupload/demos/formsdemo/ 即普通表单模式

在/demos/formsdemo/下新建文件夹 uploads

将 /smaples/php/upload.php 中的代码拷贝到 /demos/formsdemo/upload.php 开头,即

 // The Demos don't save files

这个注释下面。

修改其中的

 代码如下 复制代码

view sourceprint?$upload_name = "filedata";

为:

view sourceprint?$upload_name = "resume_file";

 (与/demos/formsdemo/index.php中的表单元素名称一致)

此时,可以使用表单正常上传文件,上传的文件保存在/demos/formsdemo/uploads/目录下

数据库处理部分,应修改下面的代码:

 

 代码如下 复制代码

if (isset($_FILES["resume_file"]) && is_uploaded_file($_FILES["resume_file"]["tmp_name"]) && $_FILES["resume_file"]["error"] == 0) { 

    echo rand(1000000, 9999999);    // Create a pretend file id, this might have come from a database. 

}

这段代码是原来demo中的upload,其作用时返回一个已经上传的文件的id并赋给表单的hidFileID标签(注意到,这个标签是一个hidden元素)

原demo是随机产生的一个数,在这要修改为数据库插入操作得到的一个数据库表的id值。即下面的做法:

去掉对$_FILES的if判断(这在上面的move_uploaded_file之后is_uploaded_file判断为false);进行数据库插入操作;直接echo得到的id(数字型)。

对于大文件上传,需要首先修改表单部分的,即

 代码如下 复制代码

/demos/formsdemo/index.php中

view sourceprint?file_size_limit : "100 MB",

修改为期待的尺寸(最大2G)

修改nginx.conf,/etc/init.d/nginx reload,若不添加下面的设置,则nginx会出现413 Request Entity Too Large错误

 代码如下 复制代码

view sourceprint?http { 

... 

client_max_body_size 128M 

... 

}

同时需要修改服务器配置 php.ini, /etc/init.d/php-cgi reload

 代码如下 复制代码

view sourceprint?upload_max_filesize 100M 

post_max_size 100M 

memory_limit 128M

注意到swfupload并不要求修改max_execution_time和max_input_time的配置。

[!--infotagslink--]

相关文章

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

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • 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
  • 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
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • 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
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07