环境

开发包: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. 采用Reflector的VS.net插件断点调试无源码DLL 分类:

    .Net的编程利器Reflector可以反编译基于.net开发的应用程序和DLL,其功能强大不用多说.今天想试验一把利用VS.net的插件断点调试外部无源码的DLL(只要是程序集都可以,所以exe也行 ...

  2. NodeJs + gm图片缩略图

    我的另一篇文章: Nginx/Apache图片缩略图技术 gm官网 1, 软件环境 nodejs npm GraphicsMagick or ImageMagick 貌似ImageMagick在处理大 ...

  3. 为什么for不能有序遍历数组的所有元素?(Array的设计原理)

    这个题目略微浅显,但却不易讲明白.如果我告诉你,我们不能以任何代码保证可以有序遍历出一个数组的所有元素,你肯定会反驳我,因为使用for明明就可以啊!但其实不是. 一.为什么FOR不能保证遍历所有? 代 ...

  4. 在CentOS上编译安装PostgreSQL

    http://my.oschina.net/tashi/blog 第一步:准备阶段 获取必需软件包: CentOS中查看是否安装了某个软件的命令:rpm -qa | grep 软件名.which命令可 ...

  5. Navigation Bar上的返回按钮文本颜色,箭头颜色以及导航栏按钮的颜色

    自从IOS7后UINavigationBar的一些属性的行为发生了变化.你可以在下图看到: 现在,如果你要修改它们的颜色,用下面的代码: self.navigationController.navig ...

  6. Fixflow引擎解析(五)(内核) - 基于Token驱动的引擎内核运转原理

    Fixflow内核运转图v1.0(beta) 未完待续.........

  7. JAVA 快递查询接口API调用-快递鸟接口

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  8. 一个响应式数据库框架SQLBrite,完美解决数据库和UI的同步更新!

    相信小伙伴们在开发中或多或少都可能遇到过这样的问题:打开一个应用后,为了快速响应,先将数据库中的数据呈现给用户,然后再去网络上请求数据,请求成功之后将数据缓存至数据库,同时更新UI,但是我们经常会这样 ...

  9. 区块上的三角形状的css写法

    .navbar .navline > .dropdown > .dropdown-menu:before { content: ''; display: inline-block; bor ...

  10. (转)FastDFS_v5.05安装配置

    http://my.oschina.net/shking/blog/165326 http://blog.csdn.net/yecong111/article/details/42646523 htt ...