Я пытаюсь загрузить изображение из imgur на одной странице без перезагрузки. Я использовал ajax
для выполнения этого.
Я попытался сделать это без ajax
, и он отлично работает, но перезагружает страницу. Поэтому я добавил следующий код ajax, и теперь изображение вообще не загружается. Что я делаю неправильно, и как я могу это исправить?
$(document).ready(function() { function onsuccess(response, status) { $("#onsuccessmsg").html("Status :<b>" + status + '</b><br><br>Response Data :<div id="msg" style="border:5px solid #CCC;padding:15px;">' + response + '</div>'); } $("#uploadform").on('submit', function() { var options = { url: $(this).attr("action"), success: onsuccess }; $(this).ajaxSubmit(options); return false; }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="http://malsup.github.io/jquery.form.js"></script> <form action="upload.php" method="POST" enctype="multipart/form-data" id="uploadform"> <input type="file" name="img" /> <input type="submit" name="submit" value="Upload" /> <br/> <br/>Message : <div id="onsuccessmsg" style="border:5px solid #CCC;padding:15px;"></div> </form>
Вот код php:
<?php $img=$_FILES['img']; if(isset($_POST['submit'])){ if($img['name']==''){ echo "<h2>An Image Please.</h2>"; }else{ $filename = $img['tmp_name']; $client_id="my-id"; $handle = fopen($filename, "r"); $data = fread($handle, filesize($filename)); $pvars = array('image' => base64_encode($data)); $timeout = 30; $curl = curl_init(); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_URL, 'https://api.imgur.com/3/image.json'); curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . $client_id)); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars); $out = curl_exec($curl); curl_close ($curl); $pms = json_decode($out,true); $url=$pms['data']['link']; if($url!=""){ echo "<h2>Uploaded Without Any Problem</h2>"; echo "<img src='$url'/>"; }else{ echo "<h2>There's a Problem</h2>"; echo $pms['data']['error']; } } } ?>
Обновить
Вот изображение: AJAX запрос / ответ
<?php if(!@$_SERVER['HTTP_REFERER']) die('No direct Access'); $img=$_FILES['img']; if($img['name']==''){ echo "<h2>An Image Please.</h2>"; }else{ $filename = $img['tmp_name']; $client_id="my-id"; $handle = fopen($filename, "r"); $data = fread($handle, filesize($filename)); $pvars = array('image' => base64_encode($data)); $timeout = 30; $curl = curl_init(); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_URL, 'https://api.imgur.com/3/image.json'); curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . $client_id)); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars); $out = curl_exec($curl); curl_close ($curl); $pms = json_decode($out,true); $url=$pms['data']['link']; if($url!=""){ echo "<h2>Uploaded Without Any Problem</h2>"; echo "<img src='$url'/>"; }else{ echo "<h2>There's a Problem</h2>"; echo $pms['data']['error']; } } ?>
вам не нужно
if(isset($_POST['submit']))
в upload.php