2015-11-03 59 views
2

我擁有一個名爲flopl.com的網站。這很基本。上傳您的文件,並返回一個鏈接到該文件的URL。但我不是編碼它的人,現在我無法再從那個人那裏得到幫助。代碼中存在錯誤,但我不知道該怎麼做。所以..下面的代碼:我的ajax有什麼問題?

HTML:

<!DOCTYPE html> 
<html style="width:100%"> 
<head> 
    <title>flopl</title> 
    <link rel="stylesheet" href="style.css"> 
    <meta charset="utf-8" /> 
    <link rel="shortcut icon" href="http://flopl.com/images/favicon.ico" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
<script src="http://malsup.github.com/jquery.form.js"></script> 
<style> 
.progress { position:relative; width:400px; border: 1px solid #ddd; padding: 1px; border-radius: 3px; } 
.bar { background-color: #B4F5B4; width:0%; height:25px; border-radius: 3px; } 
.percent { position:absolute; display:inline-block; top:-1px; left:48%; } 
</style> 
</head> 
<body style="width:100%"> 
<div style="background-color:#2d2d2d; width: auto; height:150px; padding:-10px; margin-top:-20px;"> 
</div> 
<div style="background-color:#8be1ab; width: auto; height:10px; padding:-10px; margin-top:0px;"> 
</div> 
<center> 

<img width="275px" src="images/logo.png" style="position:absolute; margin-top:-145px; margin-left:-145px;" /> 


</center> 

<div style="width:400px; margin:auto; position:relative; margin-top:15%;" > 
<center> 
<div style="margin-top:90px; margin-left:25px;"> 
<p style="word-spacing:0.6px; font-family:Helvetica font-weight:light; margin-top:-20px; position:center;">Upload any type of file,</p> 
<p style="word-spacing:0.6px; font-family:Helvetica font-weight:light; margin-top:-20px; position:center;">with no compression!</p> 
</div> 
</center> 




<form id="imageform" method="post" enctype="multipart/form-data" action='ajax_image.php'> 
<a href="#" class="buttonsub" onclick="document.getElementById('photoimg').click();"><img width="332px" src="images/upload.png" style="position:absolute; top:-120px; left:40px;"/></a> 
<input type="file" name="photoimg" id="photoimg" style="padding: 0; margin: 0; display: none;" /> 
</form> 

    <div class="progress" style="display: none;"> 
     <div class="bar"></div > 
     <div class="percent">0%</div> 
    </div> 

     <div id="status"></div> 
    <center> 

<script type="text/javascript" > 
$(document).ready(function() { 

      $('#photoimg').live('change', function() { 
         $("#preview").html(''); 
       $("#preview").html('<img width="300" src="images/uploading.png" alt="Laddar upp...."/>'); 



    var bar = $('.bar'); 
    var percent = $('.percent'); 
    var status = $('#status'); 
    var progress = $('.progress'); 

    $('#imageform').ajaxForm({ 
    target:  '#preview', 
     beforeSend: function() { 
      status.empty(); 
      progress.show(); 
      var percentVal = '0%'; 
      bar.width(percentVal); 
      percent.html(percentVal); 
     }, 
     uploadProgress: function(event, position, total, percentComplete) { 
      var percentVal = percentComplete + '%'; 
      bar.width(percentVal); 
      percent.html(percentVal); 
     }, 
     success: function() { 
      var percentVal = '100%'; 
      bar.width(percentVal); 
      percent.html(percentVal); 
     }, 
     complete: function(xhr) { 
      //status.html(xhr.responseText); 
     } 
    }).submit(); 




      }); 
     }); 
</script> 




<div id='preview' style="margin-top:40px;"> 

</div> 



</center> 
</div> 



</div> 
<div class="footer" id="footer"> 
<div id="top"> 
    <img id="copyright" src="images/footer.png" alt=""> 
    <a id="logo" href="http://www.simplyvisual.se" target="_blank"> 
     <img width="150px" src="/images/SV.png" alt="Simply Visual"> 
    </a> 
</div> 
<!--<div class="footer" id="footer"><img style="margin-top:1%; margin-left:0%" width="150" src="images/SV.png" /><img style="margin-top:0%;" src="images/footer.png" />--></div> 
</body> 
</html> 

而且PHP:

<?php 


session_start(); 
$session_id='1'; // User session id 
$path = "upload/"; 


function url($url) { 
    $url = preg_replace('~[^\\pL0-9_]+~u', '-', $url); 
    $url = trim($url, "-"); 
    $url = iconv("utf-8", "us-ascii//TRANSLIT", $url); 
    $url = strtolower($url); 
    $url = preg_replace('~[^-a-z0-9_]+~', '', $url); 
    return $url; 
} 

if(!empty($_POST) && !empty($_FILES['photoimg']) && $_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
$name = $_FILES['photoimg']['name']; 
$size = $_FILES['photoimg']['size']; 

$pi = pathinfo($name); 
$txt = $pi['filename']; 
$ext = $pi['extension']; 


$actual_image_name = time().$session_id.".".$ext; 
$tmp = $_FILES['photoimg']['tmp_name']; 
if(move_uploaded_file($tmp, $path.$actual_image_name)) 
{ 

echo "Here's the link to your file: <a href='http://flopl.com/".$path.$actual_image_name."'>http://flopl.com/".$path.$actual_image_name."</a>"; 

} 

} else { 
echo "Something went wrong."; 
exit; 
} 
?> 

的進度條顯示時,但我只得到 「出事了」 回來。我檢查過,PHP.ini設置正確。這些文件沒有上傳,因此也沒有給我回URL。

任何人都可以弄清楚什麼是錯的?

最好的問候, primarypanda

+1

哦。我忘了說出了什麼問題。當您上傳1 MB以下的文件時,一切正常,但一旦超過該文件大小,URL將不會顯示,並且文件不會被上傳,儘管進度條上升到100%。我檢查了我的網站主機,他們允許更大的文件上傳,他們已經「證實」它是一個編碼問題。 – primarypanda

回答

0

我發現至少有2個問題與您的項目。

  1. 您的主機可能允許上傳大文件,但您需要檢查文件上傳是否設置在PHP.ini文件中。在大多數CPanels中,它們允許自定義php.ini文件設置,在這裏你需要設置max_file_uploads = 20M左右。使用isset()函數可能會導致一些問題,我使用!empty()函數代替它,因爲它檢查變量是否被設置,而不是兩個都是空的。這樣你就可以做到這一點在你的代碼一樣......

    if(!empty($_POST) && !empty($_FILES['photoimg']) && $_SERVER['REQUEST_METHOD'] == 'POST'){...} 
    

    你可以注意到,我還檢查了$ _FILES [「photoimg」]也是不爲空,這意味着該文件實際上是上傳。

祝你好運,謝謝您

+1

謝謝你的回答!我檢查了php.ini,並且一切看起來都正確。我將代碼更改爲您的代碼,現在它的作用是它實際上顯示上傳(echo-text)出了問題,因爲沒有文件上傳。在它向你顯示100%之前,根本沒有顯示任何文字。但!現在我根本無法上傳任何文件。 我在上面的帖子中附加了HTML和PHP。 – primarypanda

+0

刪除$ _SERVER ['REQUEST_METHOD'] =='POST'from if條件並嘗試...它應該工作 –