导航:首页 > 文件教程 > php自动上传文件

php自动上传文件

发布时间:2024-05-02 21:41:15

『壹』 php自动上传文件到远程服务器,例如,局域网中某用户浏览该网页,则自...

基本上用php这种架构,这种功能没有实现的可能,只能坐等大牛。
因为php运行在服务器上,向客户端输出的只是一段正常的HTML而已。
照里来讲,javascript有可能做到这个工作,但是,可惜的是,为了安全起见,js被设定成无法浏览或访问数据库或是扫描文件系统
而且js还决定于用户开不开js支持。
所以你的要求注定只能悲催。
同样,你这种要求要是能很容易实现,你上网还有安全感么?

唯一的解决方案,就是弄个小程序,类似木马病毒之类的,别人上你的网站时自动下载,安装,运行。
不过这样做,对你的网站一点好处都没有。

不要去想你不应当获得的东西。
要知道躲在墙脚跟上偷窥美女洗澡的,从来不会是主角,不会被美女喜欢,而你正在做类似的事情。

『贰』 经典怎样通过php将本地的文件上传到服务器上

创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML 表单:
<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>

请留意如下有关此表单的信息:

<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

创建上传脚本

"upload_file.php" 文件含有供上传文件的代码

<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

上传限制

在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:

<?php

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
}
else
{
echo "Invalid file";
}

?>

注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。

保存被上传的文件

上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。

这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。

『叁』 php实现多文件上传

<!doctypehtml>
<html>
<head>
<metacharset="utf-8">
<title>无标题文档</title>
</head>
<body>
<formaction="?up=1"method="post"enctype="multipart/form-data"name="form1">
<inputtype="file"name="file[]">
<br>
<inputtype="file"name="file[]"id="fileField2">
<br>
<inputtype="file"name="file[]"id="fileField3">
<br>
<inputtype="submit"name="button"id="button"value="全部上传">
</form>
</body>
</html>
<?php

if(!empty($_GET['up'])){

is_dir('fileupload')ormkdir('fileupload');//如果上传目录不存在则建立

$F=$_FILES['file'];//取得上传域数组

$N=sizeof($F);//取得上传个数

for($i=0;$i<$N;$i++){//循环处理

if($F['error'][$i]){//如果上传错误

break;//跳出循环

}

if(!in_array($F['type'][$i],array('image/jpg','image/png','image/gif','image/jpeg'))){//如果文件格式不对

break;//跳出循环

};

if(ceil($F['size'][$i]/1024)>100){//如果文件过大

break;//跳出循环

}

move_uploaded_file($F['tmp_name'][$i],'fileupload/'.$F['name'][$i]);//保存上传的文件

}

}

?>

『肆』 求PHP网页上传文件代码.

自定义文件上传函数


<?php
/**
* 文件上传
*/
/**
* 文件上传函数
* @param $name string 表单上传框的name值
* @param $file_arr array 上传文件的类型限制
* @param $filesize int 上传文件限制其大小
* @param $path string 文件的保存路径
* @return string 成功返回 "上传成功及文件名"
*/
function uploads($name,$file_arr=array('jpg','png','gif','JPG','GIF','PNG'),$filesize=3145728,$path='uploads'){
//1、检测文件的错误信息,如果是0 就允许上传(保存)
$err=$_FILES[$name]['error'];
if($err>0){
if($err==1){
return '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。';
}elseif($err==2){
return '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 ';
}elseif($err==3){
return '文件只有部分被上传。';
}elseif($err==4){
return'没有文件上传';
}elseif($err>=5){
return '其他错误';
}
}
//2、检测文件的类型,是否是我们需要的(png、gif、jpg)
$pre=pathinfo($_FILES[$name]['name'],PATHINFO_EXTENSION);
if(!in_array($pre,$file_arr)){
return '上传的文件类型不符';
}
//3、检测文件大小
if($_FILES[$name]['size']>$filesize){
return '上传的文件太大';
}
//4、保存文件
$file_name=date('YmdHis',time()).mt_rand(1000,9999).'.'.$pre;
if(is_uploaded_file($_FILES[$name]['tmp_name'])){
move_uploaded_file($_FILES[$name]['tmp_name'], $path."/".$file_name);
return '上传成功|'.$file_name;
}else{
return "文件上传失败!";
}

}
?>

『伍』 如何用php实现上传excel

第一,在前台html页面进行上传文件:如:
复制代码代码如下:

<form method="post" action="php文件"enctype="multipart/form-data">
<h3>导入Excel表:</h3><input type="file" name="file_stu" />
<input type="submit" value="导入"/>
</form>

第二,在对应的php文件进行文件的处理
复制代码代码如下:

if (! empty ( $_FILES ['file_stu'] ['name'] ))
{
$tmp_file = $_FILES ['file_stu'] ['tmp_name'];
$file_types = explode ( ".", $_FILES ['file_stu']['name'] );
$file_type = $file_types [count ( $file_types ) - 1];
/*判别是不是.xls文件,判别是不是excel文件*/
if (strtolower ( $file_type ) !="xls")
{
$this->error ( '不是Excel文件,重新上传' );
}
/*设置上传路径*/
$savePath = SITE_PATH . '/public/upfile/Excel/';
/*以时间来命名上传的文件*/
$str = date ( 'Ymdhis' );
$file_name = $str . "." . $file_type;
/*是否上传成功*/
if (! ( $tmp_file, $savePath . $file_name ))
{
$this->error ( '上传失败' );
}
/*
*对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中
注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
*/
$res = Service ( 'ExcelToArray' )->read ( $savePath . $file_name );
/*
重要代码解决Thinkphp M、D方法不能调用的问题
如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码
*/
//spl_autoload_register ( array ('Think', 'autoload' ) );
/*对生成的数组进行数据库的写入*/
foreach ( $res as $k => $v )
{
if ($k != 0)
{
$data ['uid'] = $v[0];
$data ['password']= sha1 ( '111111' );
$data ['email'] =$v [1];
$data ['uname'] = $v [3];
$data ['institute'] = $v [4];
$result = M ( 'user' )->add( $data );
if (! $result)
{
$this->error ( '导入数据库失败' );
}
}
}
}

第三:ExcelToArrary类,用来引用phpExcel并处理Excel数据的
复制代码代码如下:

class ExcelToArrary extends Service{
public function __construct() {
/*导入phpExcel核心类 注意:你的路径跟我不一样就不能直接复制*/
include_once('./Excel/PHPExcel.php');
}
/**
* 读取excel $filename 路径文件名$encode 返回数据的编码默认为utf8
*以下基本都不要修改
*/
public function read($filename,$encode='utf-8'){
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow =$objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex;$col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
}
}
return $excelData;
}
}

『陆』 PHP如何上传文件

$f_type=strtolower("swf,rar,jpg,zip,7z,iso,gif,exe,rmvb");//设置可上传的文件类型

if (!is_uploaded_file($file) || ($_FILES['photoupload']['size'] > 20000 * 1024 * 1024) )
{
$error = 'Please upload only files smaller than 2Mb!';
}
$f_name=$_FILES['photoupload']['name'];
$tmp_type=substr(strrchr($f_name,"."),1);//获取文件扩展名
$tmp_type=strtolower($tmp_type);
if(!stristr($f_type,$tmp_type)){
$error="对不起,不能上传格式为:".$tmp_type."的文件:".$f_name;

}
if(move_uploaded_file($_FILES['photoupload']['tmp_name'], $uploadfile)){
$result['result'] = 'success';
$result['size'] =$f_name."文件上传成功";
}
else{
$result['result'] = 'failed';
$result['error'] =$f_name."上传失败";
}

『柒』 php如何实现文件上传

所谓上传就是把文件从你电脑本地复制到你的项目指定文件夹下。
但这有个中间过程,就是复制到系统指定的临时文件夹生成临时文件。
然后将临时文件复制到你指定的文件夹下。
剩下的就是各种验证了。
给你个图片上传方法
//上传一张图片
$pic = $_FILES['pic'];
function upload($pic){
$tmp_name = $pic['tmp_name'];
$name = $pic['name'];
$type = $pic['type'];
$size = $pic['size'];
if(!is_uploaded_file($tmp_name)) exit('不是上传文件');
//判断是否是图片
$mine = array('image/png','image/jpg','image/gif','image/jpeg');
if(!in_array($type,$mine)) exit('图片格式不正确');
//判断是否有错误码
$error = $pic['error'];
switch ($error) {
case 1:
exit("超出上传文件的最大限制");
case 2:
exit("超出了指定的文件大小");
case 3:
exit("只有部分文件被上传");
case 4:
exit("文件没有被上传");
case 6:
exit("找不到临时文件夹");
case 7:
exit("文件写入失败");

}
echo "================<br/>";
echo "上传文件名称是:".$name."<br/>";
echo "上传文件类型是:".$type."<br/>";
echo "上传文件大小是:".$size."<br/>";
echo "上传后系统返回的值是:".$error."<br/>";
echo "上传文件的临时存放路径是:".$tmp_name."<br/>";
echo"开始移动临时文件".'<br>';
$des_name = 'up/'.mt_rand().time().'.'.basename($type);
$res = move_uploaded_file($tmp_name, $des_name);
if($res){
echo "================<br/>";
echo "上传图片成功".'<br>';
}
}

『捌』 濡備綍浣跨敤php涓璮tp鍑芥暟涓婁紶鏂囦欢浠ュ強瑙e喅涓婁紶鏂囦欢澶辫触鐨勬柟娉

鍥犱负绯荤粺閲嶆瀯瀹炵幇鍧囪璐熻浇锛岀綉绔欑▼搴忎笌鏂囦欢鏈嶅姟鍣ㄤ笉鍦ㄤ竴鍙版満瀛愪笂銆備簬鏄锛岀▼搴忓湪涓婁紶鏂囦欢鐨勫悓鏃跺氨瑕佸皢鏂囦欢涓婁紶鍒版枃浠舵湇鍔″櫒涓娿
杩欓噷娑夊強鍒皐indows涓绘満涓婁紶鍒發inux涓绘満锛宭inux涓绘満涓婁紶鍒發inux涓绘満銆傝繖涓や釜涔嬮棿鍛锛屽彧鏄绋嶅井鐨勬湁鐐瑰尯鍒锛屽洜涓簑indows鐨勮矾寰勫彲浠ュ吋瀹筶inux璺寰勶紝浣嗘槸linux鐨勮矾寰勪笉鍏煎箇indows涓绘満'\\'鐨勫啓娉曘傛墍浠ワ紝鍦ㄥ啓璺寰勭殑鏃跺欑◢鍔犳敞鎰忓嵆鍙銆
涓嬮潰锛屽氨鍒椾妇涓婇潰涓ょ嶆儏鍐祊hp涓浣跨敤ftp鍑芥暟涓婁紶鏂囦欢鐨勫叿浣撳疄鐜颁唬鐮併
涓銆 ftp涓婁紶鍥剧墖鍙傛暟璇存槑銆
$source锛氭湰鏈哄浘鐗囧畬鏁寸殑璺寰勩(/a/b/c.jpg)
$des 锛氫笂浼犵洰鏍噇inux涓绘満瀹屾暣鐨勮矾寰勩
$ftp_server锛歠tp鍦板潃
$ftp_user_name锛歠tp鐢ㄦ埛鍚
$ftp_user_pass: ftp瀵嗙爜
$port:绔鍙
浜屻佸備綍浣跨敤php涓璮tp鍑芥暟涓婁紶鏂囦欢鐨勬柟娉
渚嬪傦細
鏈鍦板湴鍧涓猴細/a/b/c.jpg
鐩鏍囧湴鍧涓猴細/d/a/b/c.jpg
2.1銆乴inux涓绘満涓婁紶linux涓绘満銆
function ftpSendFile($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)
{
// 姝ゆラゆ槸鍦ㄤ簬涓婁紶鐩褰曚笌鏈鏈虹殑鐩褰曚笉涓鑷磋浆鎹浣跨敤
$des = "/d" . $des;
$conn_id = ftp_connect($ftp_server, $port) or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, TRUE);
$ftp_folder = dirname($des);
$dir = explode("/", $ftp_folder);
$path = "";
for ($i = 0; $i < count($dir); $i++) {
$path .= "/" . $dir[$i];
if (!ftp_chdir($conn_id, $path)) {
$result = ftp_mkdir($conn_id, $path);
}
}
if (ftp_put($conn_id, $des, $source, FTP_BINARY)) {
return 1;
} else {
return 0;
}
ftp_close($conn_id);
}
2銆亀indows涓绘満涓婁紶linux涓绘満銆
function sendPic($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)
{
$des = "/d" . $des;
$conn_id = ftp_connect($ftp_server, $port) or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, TRUE);
$ftp_folder = dirname(str_ireplace('\\', '/', $des));
$dir = explode("/", $ftp_folder);
$path = "";
for ($i = 0; $i < count($dir); $i++) {
$path .= "/" . $dir[$i];
if (!ftp_chdir($conn_id, $path)) {
$result = ftp_mkdir($conn_id, $path);
}
}
if (ftp_put($conn_id, str_ireplace('\\', '/', $des), $source, FTP_BINARY)) {
return 1;
} else {
return 0;
}
ftp_close($conn_id);
}
涓婇潰鐨勪袱绉嶄娇鐢╬hp涓璮tp鍑芥暟涓婁紶鏂囦欢鐨勬柟娉曞熀鏈鍙浠ユ弧瓒虫e父鐨勪娇鐢ㄣ

阅读全文

与php自动上传文件相关的资料

热点内容
js组合快捷键 浏览:174
linux系统盘默认挂在的文件夹 浏览:667
淘宝数据包如何操作上架 浏览:567
vb编程中输入cls是什么意思 浏览:81
linuxtime服务 浏览:184
疯狂安卓讲义第二版代码 浏览:420
老炮儿三小时版本下载 浏览:313
matlab怎么调试程序 浏览:2
winxp升级win7的危害 浏览:496
网络没连上却不可用是怎么回事 浏览:752
社区版本 浏览:738
怎么查微信公众号什么时候开通的 浏览:717
安装三菱编程闪退怎么回事 浏览:488
手机怎么创建word文件格式 浏览:694
c语言连接数据库 浏览:887
数据线粉色和白色哪个是正 浏览:775
vb编程应注意什么 浏览:855
js循环添加控件 浏览:615
学习计算机网络的作用 浏览:235
access数据库最新内容怎么调 浏览:203

友情链接