PHP学习笔记——上传文件到服务端的文件夹下
环境
开发包: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学习笔记——上传文件到服务端的文件夹下的更多相关文章
- 【2017-05-30】WebForm文件上传。从服务端删除文件
用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1" runat="server" /> ...
- Javaweb学习笔记——上传下载文件
一.前言 在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为comm ...
- 文件上传(excel服务端解析)
1,html结构 <!-- 引入jQuery和jQuery.form.js插件 --><script type="text/javascript" src=&qu ...
- Git学习笔记-上传一个新的项目到GitHub上
前提: 已有Github账号,已在Github上建立了仓库,已在Github上配置了SSH,已上传过一些项目到Github上 目标: 目前有一个新的项目,需要上传到github上 我的做法记录: 1. ...
- FTP 服务器在WIN10上的搭建及服务端下载文件实例
1.搭建 (1)控制面板--->程序----->将FTP服务器打勾 (2)输入iis,或者右键桌面-->管理-->服务和应用程序--->internet informat ...
- html2canvas 将网页截图为图片,上传base64 到服务端
await html2canvas(getById("winyh"), { height:500, allowTaint: true, useCORS: true, }).then ...
- Netty4 学习笔记之二:客户端与服务端心跳 demo
前言 在上一篇Netty demo 中,了解了Netty中的客户端和服务端之间的通信.这篇则介绍Netty中的心跳. 之前在Mina 中心跳的使用是通过继承 KeepAliveMessageFacto ...
- angular2 学习笔记 ( server-side rendering, angular universal, 服务端渲染 )
更新 : 2018-01-10 大半年过去了依然没有做 server side render 的冲动,但是一直有关注这方便的做法. 今天领悟了一些道理, 这里做个记入. server side re ...
- Binder学习笔记(六)—— binder服务端是如何组织addService数据的
在checkService的调查中我们知道客户端向ServiceManager请求服务名,ServiceManager根据服务名遍历本地链表,找到匹配的handle返回给客户端.这个handle显然是 ...
随机推荐
- MySQL 子查询 EXISTS 和 NOT EXISTS
MySQL EXISTS 和 NOT EXISTS 子查询 MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT ... FROM table WHERE EXISTS ...
- 安卓Android控件ListView获取item中EditText值
可以明确,现在没有直接方法可以获得ListView中每一行EditText的值. 解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值. 大概算法:重写Ba ...
- PHP 开发者该知道的5个 Composer 小技巧
Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...
- MySQL架构优化实战系列2:主从复制同步与查询性能调优
- [Effective C++ --017]以独立语句将newed对象置入智能指针
这一节也比较简单,先假设我们有如下的函数: int foo(); void memFoo(shared_ptr<T> pw, int foo); 现在假设我们要调用memFoo函数: me ...
- 信号之system函数
在http://www.cnblogs.com/nufangrensheng/p/3512291.html中已经有了一个system函数的实现,但是该版本并不执行任何信号处理.POSIX.1要求sys ...
- eclipse @override错误
@Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Over ...
- Android Service 服务(一)—— Service .
http://blog.csdn.net/ithomer/article/details/7364024 一. Service简介 Service是android 系统中的四大组件之一(Activit ...
- 有关<action android:name="android.intent.action.DELETE" />
今天看一个病毒样本时遇到了这个Action,位于一个Activity节点下 通过真机测试与导师指导发现,这个Action的作用就相当于把其所在的应用加入到了“系统卸载程序”列表,当你卸载系统中的任一应 ...
- Spring-boot访问MongoDB
1.访问配置信息 package hello; import org.springframework.context.annotation.Bean; import org.springframewo ...