环境

开发包:appserv-win32-2.5.10

服务器:Apache2.2

数据库:phpMyAdmin

语言:php5,java

平台:windows 10

需求

编写一个PHP脚本页面,可以向服务端上传文件或资源

代码

add.html

<table>
<form method="post" action="add_back.php" enctype="multipart/form-data">
<tr>
<th>作品名</th>
<td><input type="text" style="width:500px; height:30px;" name="w_name"/></td>
</tr>
<tr>
<th>压缩包</th>
<td><input type="file" name="apk_url"/></td>
</tr>
<tr>
<th>源码压缩包</th>
<td><input type="file" name="zip_url"/></td>
</tr>
<tr>
<th>预览图片</th>
<td><input type="file" name="img_url"/></td>
</tr>
<tr>
<th>简介</th>
<td><textarea name="about" style="width:500px;height:150px;"></textarea></td>
</tr>
<tr>
<th></th>
<td><input name="Fruit" type="checkbox" value="mztk" style="width:40px;" />我已阅读并同意<a href="#">免责条款</a></td>
</tr>
<tr>
<td></td>
<td><input class="sc" type="submit" value="上传" /> </td>
</tr>
</form>
</table>

add_back.php

<?php

        function GetRandStr($len)
{
$chars = array(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
"3", "4", "5", "6", "7", "8", "9"
);
$charsLen = count($chars) - 1;
shuffle($chars);
$output = "";
for ($i=0; $i<$len; $i++)
{
$output .= $chars[mt_rand(0, $charsLen)];
}
return $output;
} error_reporting(0); //不会报错
session_start();
$u_id = $_SESSION["id"];//获取当前用户ID $apk_file = "../apk/";
$zip_file = "../zip/";//你可以加上,文件类型,大小等判断
$img_file = "../img/";//设置文件保存目录 注意包含 $time = date('Y-m-d H:i:s',time());//文件名加上时间码
$s = str_replace(' ', '', $time);//去掉空格
$s = str_replace(':','',$s);//去掉:
$btime = date('YmdHis',time());//文件名加上时间码 $name = $_POST['w_name']; //名称
$about = $_POST['about']; //关于 $apk = $_FILES['apk_url'][name];//获取文件名
$zip = $_FILES['zip_url'][name];//获取文件名
$img = $_FILES['img_url'][name];//获取文件名 $apk = substr($apk, -4);//取文件后缀
$zip = substr($zip, -4);
$img = substr($img, -4); $name = GetRandStr(5); $apk = $btime.$name.$apk ;//存储文件名=时间+随机符+后缀
$zip = $btime.$name.$zip ;
$img = $btime.$name.$img ; //echo $apk; //$_FILES['img']['tmp_name'],存的文件夹.存的名字
if(
move_uploaded_file($_FILES['apk_url']['tmp_name'], $apk_file.$apk) &&
move_uploaded_file($_FILES['zip_url']['tmp_name'], $zip_file.$zip) &&
move_uploaded_file($_FILES['img_url']['tmp_name'], $img_file.$img) ){
//echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$img_file$img' height='200px' width='300px'></center>";
echo "保存成功!";
//插入数据库
include('../mysql.php');//连接数据库
session_start(); //获取当前用户
$u_id = $_SESSION["id"]; //echo $u_id;
//echo "<br/>";
//echo $name;
//echo "<br/>";
//echo $about;
//echo "<br/>";
//echo "第一个路径:$apk_file$apk";
//echo "<br/>";
//echo "第二个路径:$zip_file$zip";
//echo "<br/>";
//echo "第三个路径:$img_file$img";
//echo "<br/>"; $sql = "INSERT INTO word(w_id,u_id,w_name,apk_url,zip_url,img_url,about,w_time)VALUES('$btime$u_id','$u_id','$name','$apk_file$apk','$zip_file$zip','$img_file$img','$about','$time')";
if(mysql_query($sql,$conn)){
echo '写入数据库成功!<a href="user_zuoping.php">返回作品</a>';
} else {
echo '写入数据库失败,已删除保存文件!<a href="javascript:history.back(-1);">返回</a>';
unlink ($apk_file.$apk);
unlink ($zip_file.$zip);
unlink ($img_file.$img);
}
}else{
echo '保存失败!<a href="javascript:history.back(-1);">返回</a>';
//$myfile路径如:zip/2015-09-16142918 s.jpg
unlink ($apk_file.$apk);
unlink ($zip_file.$zip);
unlink ($img_file.$img);
}
?>

PHP学习笔记——上传文件到服务端的文件夹下的更多相关文章

  1. 【2017-05-30】WebForm文件上传。从服务端删除文件

    用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1"  runat="server" /> ...

  2. Javaweb学习笔记——上传下载文件

    一.前言 在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为comm ...

  3. 文件上传(excel服务端解析)

    1,html结构 <!-- 引入jQuery和jQuery.form.js插件 --><script type="text/javascript" src=&qu ...

  4. Git学习笔记-上传一个新的项目到GitHub上

    前提: 已有Github账号,已在Github上建立了仓库,已在Github上配置了SSH,已上传过一些项目到Github上 目标: 目前有一个新的项目,需要上传到github上 我的做法记录: 1. ...

  5. FTP 服务器在WIN10上的搭建及服务端下载文件实例

    1.搭建 (1)控制面板--->程序----->将FTP服务器打勾 (2)输入iis,或者右键桌面-->管理-->服务和应用程序--->internet informat ...

  6. html2canvas 将网页截图为图片,上传base64 到服务端

    await html2canvas(getById("winyh"), { height:500, allowTaint: true, useCORS: true, }).then ...

  7. Netty4 学习笔记之二:客户端与服务端心跳 demo

    前言 在上一篇Netty demo 中,了解了Netty中的客户端和服务端之间的通信.这篇则介绍Netty中的心跳. 之前在Mina 中心跳的使用是通过继承 KeepAliveMessageFacto ...

  8. angular2 学习笔记 ( server-side rendering, angular universal, 服务端渲染 )

    更新 : 2018-01-10  大半年过去了依然没有做 server side render 的冲动,但是一直有关注这方便的做法. 今天领悟了一些道理, 这里做个记入. server side re ...

  9. Binder学习笔记(六)—— binder服务端是如何组织addService数据的

    在checkService的调查中我们知道客户端向ServiceManager请求服务名,ServiceManager根据服务名遍历本地链表,找到匹配的handle返回给客户端.这个handle显然是 ...

随机推荐

  1. 域名的MX设置及校验方法

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  2. 一个实际的sonar代码检查的配置文件

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  3. 更改OS序列号(slmgr)

    slmgr /ipk 489j-abc-def-hij-mnn slmgr /skms 8.8.8.8:1688 slmgr /ato

  4. 如何调试libc++abi.dylib handler threw exception错误

    From:http://blog.csdn.net/naruto_ku/article/details/8779203 在进行iOS开发时,偶尔会碰到libc++abi.dylib handler t ...

  5. WdatePicker开始日期不能大于结束日期

    <input class="input_calendar inputcss" id="startDate" runat="server" ...

  6. 使用Go语言两三事

    使用Go语言两三事,在网上看到的总结的很不错哦,转自http://www.cnblogs.com/sevenyuan/archive/2013/02/27/2935887.html 一.channel ...

  7. ATF批量导出工具

    ATF批量导出工具 08 / 31, 2013 批量导出Atf的工具,使用是adobe atf 编码核心 先说一下关于atf的bug 当atf导出时候启用了mips选项会导致:如果纹理问长方形时上传会 ...

  8. Vs 2008 解决方案的目录结构设置和管理(转)

    http://blog.csdn.net/lcj_cjfykx/article/details/8632459 MS的这个IDE,实在庞杂得恐怖.从大学开始,我就一直用VC的各个版本写程序至今,细细想 ...

  9. js倒计时功能

    <input id="countdown" type="text" value="140时50分20秒"> <script ...

  10. How to install VXDIAG Honda, Toyota and JLR SDD software

    EOBD2 has newly launched Allscanner VXDIAG multi diagnostic tool with OEM diagnostic software: Honda ...