环境

开发包: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. cocos2d-x 将cocosbuilder输出文件映射成对象的原理

    转自:http://www.cnblogs.com/fox7nights/archive/2013/02/21/2920640.html 一.调用代码 CCNode* GameOverScene::l ...

  2. 安装builderRobot到Rational Functional Tester和Performance Tester

    最近研究安装builder,稍微总结一下,以后继续补充: 1. Robot采用专业的测试脚本语言, 从而导致需要学习专门的API以及专门的语法外, 用进程化的Visual Basic作为脚本语言, 导 ...

  3. 【转】C++对象内存分配问题

    原文:http://blog.csdn.net/c504665913/article/details/7797859 如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛.用C或 ...

  4. ubuntu安装mysql后不能远程访问的方法

    ubuntu安装mysql后不能远程访问的方法1.mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassw ...

  5. cocos 3.0 一键打包android平台应该注意的细节

    cocos2d-x 移植越来越便捷,走到cocos2d-x-3.0rc2,能够说移植已经非常完好了,我们仅仅要进行适当的适配,cocos能够直接帮助我们生成apk 我网络不好无法上传图片:(无图无捷豹 ...

  6. 并查集类的c++封装,比較union_find algorithm四种实现方法之间的性能区别

    问题描写叙述: 在计算机科学中,并查集是一种树型的数据结构,其保持着用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.有一个联合-查找算法(union-find algorithm ...

  7. SQL Server查询所有的表名/空间占用量/行数

    select object_name(id) tablename, 8*reserved/1024 reserved, rtrim(8*dpages)+'kb' used, 8*(reserved-d ...

  8. Linux中的终端、控制台、tty、pty等概念

    参考:http://news.newhua.com/news1/program_language/2010/623/10623141048745773199BCF0CFH6AKB9930IGCFKHB ...

  9. Linq的小知识(一),大家可以学习一下

    linq的简介 lLINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰 ...

  10. (手写识别) Zinnia库及其实现方法研究

    Zinnia库及其实现方法研究 (转) zinnia是一个开源的手写识别库.采用C++实现.具有手写识别,学习以及文字模型数据制作转换等功能. 项目地址 [http://zinnia.sourcefo ...