Heim  >  Artikel  >  Backend-Entwicklung  >  Aufzeichnung: PHP lädt Bilder auf den Server hoch und gibt die Anzeigebildadresse zurück

Aufzeichnung: PHP lädt Bilder auf den Server hoch und gibt die Anzeigebildadresse zurück

不言
不言Original
2018-05-15 14:37:308993Durchsuche

Dieses Mal bringe ich PHP mit, um Bilder auf den Server hochzuladen und die Anzeigebildadresse zurückzugeben. Was sind die Vorsichtsmaßnahmen für das Hochladen und Speichern von PHP in einem Ordner? Hier ist ein praktischer Fall.


Hauptcode zum Hochladen von Bildern im Frontend:

upload_test.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Upload Image</title>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
     <!--注意这里的iframe标签-->
     <iframe  name="post_frame" style="display:none;"> </iframe>

      <form id="photo_upload" action="upload_action.php" method="post" target="post_frame"  enctype="multipart/form-data">              
        <table width="100%" cellspacing="0" cellpadding="0" border="0" >
          <tbody>
            <tr>  
              <th style="border-bottom:1px solid #D1E0EB;text-align: right;">主题封面图:</th>
              <td style="border-bottom:1px solid #D1E0EB">
                <input type="file" id="file" name="opus" value="" width="200" /> <input style=" height: 40px;width: 45px;" type="submit" value="上传" name="submit" />  <span> 图片格式 jpg  jpeg gif  png  </span>
                <input type="hidden" name="callbackUrl" value="http://localhost/url_test/callback.php"  />
              </td>
            </tr>
          </tbody>
        </table>
      </form>

        <table width="100%" cellspacing="0" cellpadding="0" border="0" >

           <tr>
              <th style="border-bottom:1px solid #D1E0EB;text-align: right;">封面图URL:</th>
              <td style="border-bottom:1px solid #D1E0EB">
                <input type="text" id="cover_img_url" name="cover_img_url" size="120" readonly="readonly" /><span>* 
                <span style=" height: 100px;" id="show_img"></span></span>
              </td>
            </tr>
      </table>
 </body>
</html>

Hier ist zu beachten, dass das Tag iframe erforderlich ist (hier verstecken wir es), wenn die Rückrufseite die Bildadresse an die Front-End-Seite zurückgibt. Andernfalls wird der anzuzeigende Ort auf der Seite nicht gefunden. 52b2afa009e0abbef92fc5829a5f2747.

Im Vergleich zum allgemeinen ff9c23ada1bcecdd1a0fb5d5a0f18437-Tag verfügt es nur über ein weiteres Zielattribut, mit dem angegeben wird, wo die Registerkarte geöffnet und Daten übermittelt werden sollen .
Wenn es auf den Namenswert des Iframes eingestellt ist, also „post_frame“, wird es im Iframe geöffnet. Da das CSS auf „versteckt“ eingestellt ist, findet keine Bewegung statt. Wenn Sie display:none entfernen, sehen Sie auch die Rückgabeinformationen vom Server.

Beim Hochladen von Dateien müssen die Methoden- und Enctype-Attribute des Formulars mit dem obigen Code übereinstimmen und dann den Zielwert auf den Namen des Iframes festlegen, damit Dateien ohne Aktualisierung hochgeladen werden können.

<iframe  name="post_frame" style="display:none;"> </iframe>

Wenn Sie sich für die Übermittlung eines Bildes entscheiden, gibt es auch ein ausgeblendetes Feld. Das heißt, wenn Sie ein Bild an den Remote-Server übermitteln, müssen Sie auch einen Rückrufpfad übermitteln, damit das Bild dies tun kann an den lokalen Server zurückgegeben werden. (Hier verwenden wir alle lokale Server zum Testen)

 <input type="hidden" name="callbackUrl" value="http://localhost/url_test/callback.php"  />

Remote-Server-Bildverarbeitung

upload_action.php

<?php
/**
 * 图片上传处理
 * User: CorwienWong
 * Date: 16-06-15
 * Time: 00:33
 */
header("Content-type:text/html;charset=utf-8");

// 配置文件需要上传到服务器的路径,需要允许所有用户有可写权限,否则无法上传成功
$uploadPath = &#39;uploads/&#39;;

// 获取提交的图片数据
$file = $_FILES[&#39;opus&#39;];

// 获取图片回调路径
$callbackUrl = $_POST[&#39;callbackUrl&#39;];

if($file[&#39;error&#39;] > 0)
{

    $msg = &#39;传入参数错误&#39; . $file[&#39;error&#39;] . "  ";
    exit($msg);
}
else
{

   // chmod($uploadPath, 0666);

    if(file_exists($uploadPath.$file[&#39;name&#39;])){
       $msg = $file[&#39;name&#39;] . "文件已经存在!";
       exit($msg);
    }
    else
    {
        if(move_uploaded_file($file[&#39;tmp_name&#39;], $uploadPath.$file[&#39;name&#39;]))
        {

          $img_url = "http://localhost/url_test/".$uploadPath.$file[&#39;name&#39;];
          $img_url = urlencode($img_url);

          $url = $callbackUrl."?img_url={$img_url}";

          // 跳转
          header("location:{$url}");
          exit();

        }
        else
        {
          exit("上传失败!");

        }

    }}?>

Die Rückrufseite gibt die Bildadresse an die Frontend-Seite zurück

Nachdem die Rückrufseite die Bildadresse von der erhalten hat Remote-Server. Kehren Sie über „window.parent.XXX“ zur Front-End-Seite zurück.
callback.php

<?php
  ##回调方法

$img_url = $_GET[&#39;img_url&#39;];

// 返回数据给回调页面

echo "
<script>window.parent.document.getElementById(&#39;cover_img_url&#39;).value=&#39;{$img_url}&#39;;</script>
";

?>

Verwandte Empfehlungen:

Änderung der PHP-Upload-Größenbeschränkung




Das obige ist der detaillierte Inhalt vonAufzeichnung: PHP lädt Bilder auf den Server hoch und gibt die Anzeigebildadresse zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn