Home >Backend Development >PHP Tutorial >关于一次上传多个图片的插件有没有?解决方法

关于一次上传多个图片的插件有没有?解决方法

WBOY
WBOYOriginal
2016-06-13 10:25:59766browse

关于一次上传多个图片的插件有没有?
像discuz发帖那样,一次上传多个图片,然后将所有上传的图片路径插入到编辑器中。

有没有?

------解决方案--------------------
找个JS批量上传插件,主要是美观而已,技术角度还是个表单。

从http协议实现角度,下面的php代码是一个活生生的协议细节:

PHP code
<?php function do_post_request($url, $postdata, $files = null) {     $data = "";     $boundary = "---------------------".substr(md5(rand(0,32000)), 0, 10);            //Collect Postdata     foreach($postdata as $key => $val)     {         $data .= "--$boundary\n";         $data .= "Content-Disposition: form-data; name=\"".$key."\"\n\n".$val."\n";     }          $data .= "--$boundary\n";         //Collect Filedata     foreach($files as $key => $file)     {         $fileContents = file_get_contents($file['tmp_name']);                 $data .= "Content-Disposition: form-data; name=\"{$key}\"; filename=\"{$file['name']}\"\n";         $data .= "Content-Type: image/jpeg\n";         $data .= "Content-Transfer-Encoding: binary\n\n";         $data .= $fileContents."\n";         $data .= "--$boundary--\n";     }       $params = array('http' => array(            'method' => 'POST',            'header' => 'Content-Type: multipart/form-data; boundary='.$boundary,            'content' => $data         ));    $ctx = stream_context_create($params);    $fp = fopen($url, 'rb', false, $ctx);       if (!$fp) {       throw new Exception("Problem with $url, $php_errormsg");    }      $response = @stream_get_contents($fp);    if ($response === false) {       throw new Exception("Problem reading data from $url, $php_errormsg");    }    return $response; } //set data (in this example from post) //sample data $postdata = array(     'name' => $_POST['name'],     'age' => $_POST['age'],     'sex' => $_POST['sex'] ); //sample image $files['image'] = $_FILES['image']; do_post_request("http://example.com", $postdata, $files); ?><br><font color="#e78608">------解决方案--------------------</font><br>swfopload<br><font color="#e78608">------解决方案--------------------</font><br>在学习PHP中可能会遇到PHP上传多张图片问题,上传图片需要对图片格式的校验,保证上传的一定是图片,防止上传其他文件到服务器。多图片上传基本实现方法是使用数组的形式,把所有的图片提交个一个数组,对数组的元素进行一个个循环的处理。下面是PHP多图片上传的代码示例:<br><br>1.<?php   <br />2.//图片目录 <br>3.$img_dir="../upload/"; <br>4.//……html显示上传界面 <br>5./*图片上传处理*/ <br>6.//把图片传到服务器 <br>7.//初始化变量 <br>8.$uploaded=0; <br>9.$unuploaded=0; <br>10.//只允许五张图片上传 <br>11.for($i=0;$i12.{ <br>13.//获取当前图片的信息 <br>14.$is_file=$_FILES['imgfile']['name'][$i]; <br>15.//如果当前图片不为空 <br>16.if(!empty($is_file)) <br>17.{ <br>18.//把当前图片的信息存储到变量里 <br>19.$result[$i]=" <br>20.<trclasstrclass>  <br>21.<td>".$_FILES['imgfile']['name'][$i]."</td>  <br>22.<td>".round($_FILES['imgfile']['size'][$i]/1024,2)."K</td>  <br>23.<td>".$_FILES['imgfile']['type'][$i]."</td>  <br>24.<td>"; <br>25.//判断上传的图片的类型是不是jpg,gif,png,bmp中的一种,同时判断是否上传成功 <br>26.if( <br>27.$_FILES['imgfile']['type'][$i]=="image/pjpeg"|| <br>28.$_FILES['imgfile']['type'][$i]=="image/gif"|| <br>29.$_FILES['imgfile']['type'][$i]=="image/x-png"|| <br>30.$_FILES['imgfile']['type'][$i]=="image/bmp" <br>31.) <br>32.{ <br>33.//如果上传的文件没有在服务器上存在 <br>34.if(!file_exists($img_dir.$_FILES['imgfile']['name'][$i])) <br>35.{ <br>36.//把图片文件从临时文件夹中转移到我们指定上传的目录中 <br>37.move_uploaded_file($_FILES['imgfile']['tmp_name'][$i], <br>38.$img_dir.$_FILES['imgfile']['name'][$i]); <br>39.$result[$i].="成功"; <br>40.$uploaded++; <br>41.} <br>42.else//如果文件已经在服务器上存在 <br>43.{ <br>44.$result[$i].="<fontcolor>文件已存在";<div class="clear">
                 
              
              
        
            </div></fontcolor>
</td></trclasstrclass>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn