导航:首页 > 编程语言 > php上传到图片服务器

php上传到图片服务器

发布时间:2022-08-20 01:57:43

php手机站,怎么上传图片给服务器(提交给接口api处理)

上传操作可以使用FTP来实现,用php即可调用。

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

㈡ php 编写 实现上传图片至服务器的函数

<?php
classFileUpload{
private$filepath;//指定上传文件保存的路径
private$allowtype=array("gif","jpg","jpeg","png");//允许上传文件的类型
private$maxsize=1000000;//允许上传文件的最大值
private$israndname=true;//是否随机重命名,
private$originName;//源文件名字
private$tmpFileName;//临时文件名字
private$fileType;//上传后的文件类型,主要是文件后缀名
private$fileSize;//文件尺寸
private$newFileName;//新文件名字
private$errorName=0;//错误号
private$errorMess="";//用来提供错误报告
//用于对上传文件初始化
//指定上传路径2·允许的类型3·限制大小4·是否使用随机文件名称
//让用户可以不用换位置传参数,后面参数给值不用按照位置或者必须有值
function__construct($options=array()){
foreach($optionsas$key=>$val){
$key=strtolower($key);
//查看用户参数中的数组下标是否和成员属性名相同
//get_class_vars(get_class($this))得到类属性的数组
//如果$key下标不在这个类属性的数组中,则退出for循环
if(!in_array($key,get_class_vars(get_class($this)))){
continue;
}
$this->setOption($key,$val);
}
}
privatefunctionsetOption($key,$val){
//让实例化后获取过来的数组下标=数组下标的值,这里即为构造函数初始化
//构造函数中调用,等于把所有属性初始化,将来可以直接访问
$this->$key=$val;
}

privatefunctiongetError(){
$str="上传文件{$this->originName}时出错";
switch($this->errorNum){
case4:$str.="没有文件被上传";
break;
case3:$str.="文件只有部分上传";
break;
case2:$str.="上传文件超过了表单的值";
break;
case1:$str.="上传文件超过phpini的值";
break;
case-1:$str.="未允许的类型";
break;
case-2:$str.="文件过大上传文件不能超过{$this->maxsize}字节";
break;
case-3:$str.="上传文件失败";
break;
case-4:$str.="建立存放上传文件目录失效,请重新上传指定目录";
break;
case-5:$str.="必须指定上传文件的路径";
break;
default:$str.="未知错误";
}
return$str.'<br>';
}
//用来检查文件上传路径
privatefunctioncheckFilePath(){
if(empty($this->filepath)){
$this->setOption("errorNum",-5);
returnfalse;
}
if(!file_exists($this->filepath)||!is_writable($this->filepath)){
if(!@mkdir($this->filepath,0755)){
$this->setOption("errorNum",-4);
returnfalse;
}
}
returntrue;
}
//用来检查上传文件尺寸大小

privatefunctioncheckFileSize(){
if($this->fileSize>$this->maxsize){
$this->setOption("errorNum",-2);
returnfalse;
}else{
returntrue;
}
}

//用来检查文件上传类型
privatefunctioncheckFileType(){
if(in_array(strtolower($this->fileType),$this->allowtype)){
returntrue;
}else{
//如果$this->fileType这个类型不在$this->allowtype这个数组中,则把错误号变成-1
$this->setOption("errorNum",-1);
returnfalse;
}
}
privatefunctionsetNewFileName(){
if($this->israndname){
$this->setOption("newFileName",$this->preRandName());
}else{
$this->setOption("newFileName",$this->originName);
}
}
//用于检查文件随机文件名
privatefunctionpreRandName(){
$fileName=date("Ymdhis").rand(100,999);
return$fileName.".".$this->fileType;
}
//用来上传一个文件

functionuploadFile($fileField){
//检查文件路径
$return=true;
if(!$this->checkFilePath()){
$this->errorMess=$this->getError();
returnfalse;
}//获取文件信息
$name=$_FILES[$fileField]['name'];
$tmp_name=$_FILES[$fileField]['tmp_name'];
$size=$_FILES[$fileField]['size'];
$error=$_FILES[$fileField]['error'];
if(is_array($name)){//判断获取过来的文件名字是否为数组
$errors=array();//如果为数组则设置为一个数组错误号
for($i=0;$i<count($name);$i++){
//循环每个文件即每个类属性赋值或者说初始化属性值或者初始化构造函数
if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
if(!$this->checkFileSize()||!$this->checkFileType()){
//如果上面尺寸或者类型不对,则调用这个错误信息
$errors[$i]=$this->getError();
$return=false;
}
}else{
//这里是
$error[]=$this->getError();
$return=false;
}
if(!$return)
$this->setFiles();
}

if($return){
$fileNames=array();
for($i=0;$i<count($name);$i++){
if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
$this->setNewFileName();
if(!$this->File()){
$errors=$this->getError();
$return=false;
}else{
$fileNames[$i]=$this->newFileName;
}
}

}
$this->newFileName=$fileNames;
}

$this->errorMess=$errors;
return$return;


}else{

//看看$name,$tmp_name,$size,$error这些是否赋值成功否则返回FALSE
if($this->setFiles($name,$tmp_name,$size,$error)){
//看看文件大小尺寸是否匹配,不匹配返回FALSE
if($this->checkFileSize()&&$this->checkFileType()){
//获取新文件名
$this->setNewFileName();
if($this->File()){
returntrue;
}else{
returnfalse;
}
}else{
$return=false;
}
}else{
$return=false;
}
if(!$return){
$this->errorMess=$this->getError();
return$return;
}
}

}

functionFile(){//将文件从临时目录拷贝到目标文件夹
if(!$this->errorNum){
//如果传递来的路径有斜杠,则删除斜杠再加上斜杠
//./upload+./
$filepath=rtrim($this->filepath,'/').'/';
//./upload+./+加上随机后的新文件名和后缀
//这里指创建一个新的$filepath.这个文件像占位符但是为空的
$filepath.=$this->newFileName;
//尝试着把临时文件$this->tmpFileName移动到$filepath下哪里覆盖原来的这个文件
if(@move_uploaded_file($this->tmpFileName,$filepath)){
returntrue;
}else{
$this->setOption('errorNum',-3);
returnfalse;
}
}else{
returnfalse;
}
}
//这里是为了其他剩余的属性进行初始化操作!
privatefunctionsetFiles($name="",$tmp_name="",$size=0,$error=0){
//这里给错误号赋值
$this->setOption("errorNum",$error);
//如果这里有错误,直接返回错误
if($error){
returnfalse;
}
$this->setOption("originName",$name);//复制名字为源文件名
$this->setOption("tmpFileName",$tmp_name);
$arrstr=explode(".",$name);//按点分割文件名,
//取分割后的字符串数组最后一个并转换为小写,赋值为文件类型
$this->setOption("fileType",strtolower($arrstr[count($arrstr)-1]));
$this->setOption("fileSize",$size);
returntrue;
}
//用来获取上传后的文件名
functiongetNewFileName(){
return$this->newFileName;
}

//上传失败,后则返回这个方法,就可以产看报告
functiongetErrorMsg(){
return$this->errorMess;
}
}
?>


============================调用====================================


<?php
require("FileUpload.class.php");
//这里实例化后赋值为数组,数组的下标要对应类中属性的值,否则不能传递值,可以不分先后但是必须一致
$up=newFileUpload(array('israndname'=>'true',"filepath"=>"./upload/",'allowtype'=>array('txt','doc','jpg','gif'),"maxsize"=>1000000));
echo'<pre>';

if($up->uploadFile("pic")){
print_r($up->getNewFileName());
}else{
print_r($up->getErrorMsg());
}
echo'<pre>';
?>


-------------------HTML-------------------------
<html>
<head>
<metahttp-quive="content-type"content="text/html;charset=utf-8"></meta>
</head>
<body>
<formaction="upload.php"method="post"enctype="multipart/form-data">
shoppic:<inputtype="file"name="pic[]"><br>

<inputtype="hidden"name="MAX_FILE_SIZE"value="1000000">
<inputtype="submit"name="sub"value="添加商品">
</form>
</body>

</html>

-------------------或者HTML-------------------------

<html>
<head>
<metahttp-quive="content-type"content="text/html;charset=utf-8"></meta>
</head>
<body>
<formaction="upload.php"method="post"enctype="multipart/form-data">
//区别在这里
shoppic:<inputtype="file"name="pic[]"><br>
shoppic:<inputtype="file"name="pic[]"><br>
shoppic:<inputtype="file"name="pic[]"><br>
<inputtype="hidden"name="MAX_FILE_SIZE"value="1000000">
<inputtype="submit"name="sub"value="添加商品">
</form>
</body>

</html>
=====================================================================



以上是自己总结的 还没有怎么精简加工过,仅供参考

以上不止可以上传图片,可以上自定义任何文件

㈢ php里,如何直接上传图片至专属的图片服务器

生成一个随机id 传给B,随机ID 存在A数据库,B接受数据,读取A的数据库比对就行了。

数据库仅仅存放那个id而已,相当于上传时B问A,这个id是否合法,A说合法,就可以存图片咯,B可以直接读A的数据库,也可以将这个id反传给A,由A执行查询告知B结果,用include就行,远程包含一个A的php查询页面

㈣ php上传图片到服务器的前端和php代码

<?
require_once('../classfile/guid.class.php');

if(!isset($_FILES['imgFile'])){
echojson_encode(array("success"=>false,'msg'=>"NotgetImgfile"));
return;
}
$upfile=$_FILES['imgFile'];
$name=$upfile["name"];//上传文件的文件名
$type=$upfile["type"];//上传文件的类型
$size=$upfile["size"];//上传文件的大小
$tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径
$error_cod=$upfile["error"];
if($error_cod>0){
echojson_encode(array("success"=>false,'msg'=>$error_cod));
}

$ext_file_name="";

switch($type){
case'image/pjpeg':
$okType=true;
$ext_file_name =".jpg";
break;
case'image/jpeg':
$okType=true;
$ext_file_name =".jpg";
break;
case'image/gif':
$okType=true;
$ext_file_name =".gif";
break;
case'image/png':
$okType=true;
$ext_file_name =".png";
break;
}

if(!$okType){
echojson_encode(array("success"=>false,'msg'=>"Notimage"));
return;
}
$web_root="D:".DIRECTORY_SEPARATOR."Easy2PHP5".DIRECTORY_SEPARATOR."webSiteJfz".DIRECTORY_SEPARATOR;

$photo_tmp_path=$web_root."img".DIRECTORY_SEPARATOR."userimg".DIRECTORY_SEPARATOR."temp";
$temp_file_name=creat_guid(0).$ext_file_name;
$photo_tmp_file_name=$photo_tmp_path.DIRECTORY_SEPARATOR.$temp_file_name;
$photo_tmp_file_scr="img".DIRECTORY_SEPARATOR."userimg".DIRECTORY_SEPARATOR."temp".DIRECTORY_SEPARATOR.$temp_file_name;
move_uploaded_file($tmp_name,$photo_tmp_file_name);


echojson_encode(array("success"=>true,'msg'=>"ok","file_name"=>$photo_tmp_file_name,"file_scr"=>$photo_tmp_file_scr));

//echojson_encode(array("success"=>false,'msg'=>json_encode($_FILES['imgFile'])));
return;

?>

guid.class.php//生成唯一的图片文件名
<?
functioncreat_guid($long){
$uuid="";
if(function_exists('com_create_guid')){
$uuid=com_create_guid();
}else{
mt_srand((double)microtime()*10000);//optionalforphp4.2.0anp.
$charid=strtoupper(md5(uniqid(rand(),true)));
$hyphen=chr(45);//"-"
$uuid=chr(123)//"{"
.substr($charid,0,8).$hyphen
.substr($charid,8,4).$hyphen
.substr($charid,12,4).$hyphen
.substr($charid,16,4).$hyphen
.substr($charid,20,12)
.chr(125);//"}"
//return$uuid;
}
if(!isset($long)||$long==0){
returnsubstr($uuid,1,strlen($uuid)-2);
}else{
return$uuid;
}
}

㈤ 用php如何把一些文件和图片上传到另一指定的服务器

具体的说不了 。只能给你个思路。 先把图片文件上传到原来的服务器上。 然后用php 的函数 ftp_put 之类的函数 传到另一台服务器上

㈥ 怎样用php实现上传图片到数据库

php实现上传图片保存到数据库的方法。具体分析如下:

php 上传图片,一般都使用move_uploaded_file方法保存在服务器上。但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外)
如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间。

首先图片文件是二进制数据,所以需要把二进制数据保存在mysql数据库。
mysql数据库提供了BLOB类型用于存储大量数据,BLOB是一个二进制对象,能容纳不同大小的数据。

BLOB类型有以下四种,除存储的最大信息量不同外,其他都是一样的。可根据需要使用不同的类型。

TinyBlob 最大 255B
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G

数据表photo,用于保存图片数据,结构如下:

CREATETABLE`photo`(
`id`int(10)unsignedNOTNULLauto_increment,
`type`varchar(100)NOTNULL,
`binarydata`mediumblobNOTNULL,
PRIMARYKEY(`id`)
)ENGINE=MyISAMDEFAULTCHARSET=latin1AUTO_INCREMENT=1;

upload_image_todb.php代码如下:

<?php
//连接数据库
$conn=@mysql_connect("localhost","root","")ordie(mysql_error());
@mysql_select_db('demo',$conn)ordie(mysql_error());//判断action
$action=isset($_REQUEST['action'])?$_REQUEST['action']:'';
//上传图片
if($action=='add'){
$image=mysql_escape_string(file_get_contents($_FILES['photo']['tmp_name']));
$type=$_FILES['photo']['type'];
$sqlstr="insertintophoto(type,binarydata)values('".$type."','".$image."')";
@mysql_query($sqlstr)ordie(mysql_error());
header('location:upload_image_todb.php');
exit();
//显示图片
}elseif($action=='show'){
$id=isset($_GET['id'])?intval($_GET['id']):0;
$sqlstr="select*fromphotowhereid=$id";
$query=mysql_query($sqlstr)ordie(mysql_error());
$thread=mysql_fetch_assoc($query);
if($thread){
header('content-type:'.$thread['type']);
echo$thread['binarydata'];
exit();
}
}else{
//显示图片列表及上传表单
?>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
<title>uploadimagetodbdemo</title>
</head>

<body>
<formname="form1"method="post"action="upload_image_todb.php"enctype="multipart/form-data">
<p>图片:<inputtype="file"name="photo"></p>
<p><inputtype="hidden"name="action"value="add"><inputtype="submit"name="b1"value="提交"></p>
</form>

<?php
$sqlstr="select*fromphotoorderbyiddesc";
$query=mysql_query($sqlstr)ordie(mysql_error());
$result=array();
while($thread=mysql_fetch_assoc($query)){
$result[]=$thread;
}
foreach($resultas$val){
echo'<p><img
src="upload_image_todb.php?action=show&id='.$val['id'].'&t='.time().'"
width="150"></p>';
}
?>
</body>
</html>
<?php
}
?>

程序运行截图和数据库截图:

㈦ php如何上传图片到远程服务器

可以使用curl这个扩展来实现。
PHP 支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。
libcurl支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。
curl_close() 关闭一个cURL会话。
curl__handle()复制一个cURL句柄和它的所有选项。
curl_errno()返回最后一次的错误号。
curl_error()返回一个保护当前会话最近一次错误的字符串。
curl_escape()返回转义字符串,对给定的字符串进行URL编码。
curl_exec()执行一个cURL会话。
curl_file_create()创建一个CURLFile对象。
curl_getinfo()获取一个cURL连接资源句柄的信息。
curl_init()初始化一个cURL会话。
curl_multi_add_handle()向curl批处理会话中添加单独的curl句柄。
curl_multi_close()关闭一组cURL句柄。
curl_multi_exec()运行当前cURL句柄的子连接
curl_multi_getcontent()如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流。
curl_multi_info_read()获取当前解析的cURL的相关传输信息。
curl_multi_init()返回一个新cURL批处理句柄。
curl_multi_remove_handle()移除curl批处理句柄资源中的某个句柄资源。
curl_multi_select()等待所有cURL批处理中的活动连接。
curl_multi_setopt()设置一个批处理cURL传输选项。
curl_multi_strerror()返回描述错误码的字符串文本。
curl_pause()暂停及恢复连接。
curl_reset()重置libcurl的会话句柄的所有选项。
curl_setopt_array()为cURL传输会话批量设置选项。
curl_setopt()设置一个cURL传输选项。
curl_share_close()关闭cURL共享句柄。
curl_share_init()初始化cURL共享句柄。
curl_share_setopt()设置一个共享句柄的cURL传输选项。
curl_strerror()返回错误代码的字符串描述。
curl_unescape()解码URL编码后的字符串。
curl_version()获取cURL版本信息。

㈧ PHP中图片上传到服务器的问题

第一种情况:可能是服务器没有链接上,服务器的设置有问题。
第二种情况:可能是图片的路径有问题,你可以右击查看图片属性,确定路径。
第三种情况:也就是你说的内存不足。

㈨ php 上传图片到服务器及读取

上传用的表单:

<formmethod="post"enctype="multipart/form-data">
<inputtype="file"name="file">
<buttontype="submit">上传图片</buttom>
</form>

处理上传的php

<?php
$File=$_FILES['file'];//取得上传数组
move_uploaded_file($File['tmp_name],"upload/".$_FILES['file']['name']);//移动上传后的临时文件到指定目录

当然, 实际运用的时候还要检测上传类型, 上传大小等, 具体建议网络一下 php上传文件

㈩ php 实现上传图片至服务器的函数

<form method=post action="upload.php" ENCTYPE="multipart/form-data">

<input type="file" name="upload_file">
<input type="submit" name="submit" value="上传文件">

用PHP上传时,需要对内容作详细的检查,例如是否容许读写文件,文件格式、文件大小是否在你指定的大小内等。

<?

$file_size_max = 1000000;

// 限制文件上传最大容量(bytes)

$store_dir = "/public/www/upload/";

// 上传文件的储存位置

$accept_overwrite = true;

//允许读写文件

// 检查文件大小

if ($upload_file_size > $file_size_max) {

echo "对不起,你的文件容量大于规定";

exit;

}

// 检查读写文件

if (file_exists($store_dir . $upload_file_name) &&&& !$accept_overwrite) {

echo "文件已存在,不能再复制";

exit;

}

//复制文件到指定目录

if (! @ ($upload_file,$store_dir . $upload_file_name)) {

echo "复制文件失败";

exit;

}

echo "上传文件完成";
?>

阅读全文

与php上传到图片服务器相关的资料

热点内容
度人经pdf 浏览:898
怎么配置android远程服务器地址 浏览:956
java程序员看哪些书 浏览:939
什么app可以免费和外国人聊天 浏览:793
pdf手写笔 浏览:178
别永远伤在童年pdf 浏览:986
爱上北斗星男友在哪个app上看 浏览:418
主力散户派发源码 浏览:667
linux如何修复服务器时间 浏览:58
荣县优途网约车app叫什么 浏览:477
百姓网app截图是什么意思 浏览:225
php如何嵌入html 浏览:813
解压专家怎么传输 浏览:745
如何共享服务器的网络连接 浏览:134
程序员简易表白代码 浏览:168
什么是无线加密狗 浏览:64
国家反诈中心app为什么会弹出 浏览:69
cad压缩图打印 浏览:104
网页打开速度与服务器有什么关系 浏览:865
android开发技术文档 浏览:65