导航:首页 > 文件教程 > 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自动上传文件相关的资料

热点内容
电脑怎么编程算字符串长度 浏览:951
如何预防网络被占用 浏览:394
dns怎么修复不了网络异常 浏览:328
怎么查看苹果备份文件 浏览:26
网络上说的陈劲生是什么 浏览:913
网站首页都用了哪些知识点 浏览:41
如何删除手机软件的重复文件 浏览:908
微信页面没有添加图标 浏览:47
暗黑绿色装备升级 浏览:261
到哪里学编程啊 浏览:752
电脑粉碎文件和卸载 浏览:365
怎么查看共享电脑所有文件 浏览:617
创意编程社区账号在哪里 浏览:377
好用的压缩文件 浏览:538
360下载的补丁包在哪个文件夹 浏览:988
微信54安卓版本官网 浏览:698
为什么cnc编程找工作难 浏览:777
sql数据库端口不通 浏览:361
javaword转swf 浏览:174
cms数据更新是什么 浏览:39

友情链接