2013-06-28 20 views
0

我查看了許多關於將文件上傳到遠程目錄(通過GoDaddy託管; Windows機器)的問題的帖子,但是未能成功實施更改。將kml文件上傳到由GoDaddy託管的遠程目錄的問題

這是我正在做的。我寫了一個非常簡單的PHP來將本地KML文件上傳到遠程GoDaddy目錄。我這樣做是爲了爲KML創建一個面向公衆的URL,然後將它添加到我的Google Map應用程序中。

我所做的事情:

  • 確保了許可允許「寫」到我上傳的目錄。
  • 通過上傳到我網站上的目錄測試PHP。這是有效的,但該網站並非面向公衆(因此它不會覆蓋地圖上的KML,因此我現在試圖上傳到GoDaddy)。
  • 改寫我的AJAX功能後使用不同的數據類型(顯然這一直是其他GoDaddy的用戶上傳文件時修復)
  • 添加了.KML MIME類型GoDaddy的web.config中

是什麼工作:

  • 如果我使用FTP文件管理器,並手動將KML放在目錄中,它是可訪問的,並加載在我的地圖上就好了。
  • 顯然,PHP的工作原理是因爲我的.done()函數試圖上傳後觸發。

什麼我的極限是:

  • 我不能登錄GoDaddy的的客戶經理,因爲這個信息的唯一的人是我們的網絡管理員(誰巧合的是走出辦公室)。
  • PHP,除了閱讀教程,創建Hello World頁面和郵件表單之外,我從來沒有做過任何事情。

這裏是AJAX後:

$.ajax({ 
     url: 'http://www.example.com/dev/Drawings/upload.php', 
     type: 'POST', 
     processData: false, 
     data: data, 
     dataType: 'html' 
    }) 
    .done(function() { 
     dKML = new google.maps.KmlLayer('http://www.example.com/dev/Drawings/Uploads/' + filename); 
     dKML.setMap(map); 
    }) 
    .fail(function (xhr, errorType, exception) { 
     var errorMessage = exception + "\n" + xhr.status + "\n" + errorType; 
     alert(errorMessage); 
    }); 

這是我的PHP(upload.php的):

<?php 
header("Access-Control-Allow-Origin: *"); 
if (!isset($_FILES['file'])) { 
    die(); 
} else { 
    $temp_file = $_FILES['file']['tmp_name']; 
    move_uploaded_file($temp_file, "/Uploads/" . $_FILES['file']['name']); 
} 

?> 

我一直在猶豫,張貼在這裏,因爲我相信我可以弄清楚這一點,但老實說,我在無數小時的試錯中迷失了方向。

我的問題是:

在語法方面是否顯示不正確?

有沒有人遇到過類似的問題,如果是的話,你能做些什麼來解決這個問題?

是否有可能存在問題,因爲在測試上傳時我使用的是localhost?

預先感謝您!

+1

你的問題到底是什麼?你有錯誤信息嗎? – raam86

+0

可能並不明確,但我的問題只是(和問題)這個問題......爲什麼這不起作用?這是明顯的嗎?你會做一些不同的事情嗎?我只需要知道我是否正確地做了這件事,還是需要重新考慮一些事情?你(或其他人)以前是否處理過這個問題?沒有錯誤消息要報告。它只是不移動上傳的文件。我需要知道爲什麼。如果您需要更多信息,請告訴我。 –

+0

它可能是一個協議問題?調試我的網站時使用的是localhost。但我已經讀過一個域至少需要2個「。」 。那麼有可能我的網站無法訪問PHP腳本,因爲沒有真正的域名?如果是這種情況,我不明白爲什麼AJAX會返回成功。思考? –

回答

0

一旦我發現tmp_name值爲null,我開始尋找更好的錯誤處理來添加到我的PHP中。

我最終改變我的PHP來:

`代碼

<?php 
    $error = ""; 
    $msg = ""; 
    $fileElementName = 'file'; 
    if(!empty($_FILES[$fileElementName]['error'])) 
    { 
     switch($_FILES[$fileElementName]['error']) 
     { 

     case '1': 
      $error = 'The uploaded file exceeds the upload_max_filesize directive in php.ini'; 
      break; 
     case '2': 
      $error = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'; 
      break; 
     case '3': 
      $error = 'The uploaded file was only partially uploaded'; 
      break; 
     case '4': 
      $error = 'No file was uploaded.'; 
      break; 
     case '6': 
      $error = 'Missing a temporary folder'; 
      break; 
     case '7': 
      $error = 'Failed to write file to disk'; 
      break; 
     case '8': 
      $error = 'File upload stopped by extension'; 
      break; 
     case '999': 
     default: 
      $error = 'No error code available'; 
    } 
}elseif(empty($_FILES['file']['tmp_name']) || $_FILES['file']['tmp_name'] == 'none') 
{ 
    $error = 'No file was uploaded..'; 
}else 
{ 
     $msg .= " File Name: " . $_FILES['file']['name'] . ", "; 
     $msg .= " File Size: " . @filesize($_FILES['file']['tmp_name']); 
     //for security reason, we force to remove all uploaded file 
     @unlink($_FILES['file']);  
}  
echo "{"; 
echo    "error: '" . $error . "',\n"; 
echo    "msg: '" . $msg . "'\n"; 
echo "}"; 
?> 

`

我也更新了.submit()函數我的表格上:

`代碼

e.preventDefault(); 
var dataString; 
var action = 'http://www.example.com/dev/Drawings/upload.php'; 
if ($("#form").attr("enctype") == "multipart/form-data") { 
    dataString = new FormData($("#form").get(0)); 
    contentType = false; 
    processData = false; 
} 
$.ajax({ 
    type: "POST", 
    url: action, 
    data: dataString, 
    dataType: "html", 
    contentType: contentType, 
    processData: processData 
}) 
.done(function() { 
    delay(function() { 
     dKML = new google.maps.KmlLayer('http://www.example.com/dev/Drawings/Uploads/' + filename); 
     dKML.setMap(map); 
    }, 2000); 
}) 
.fail(function (xhr, errorType, exception) { 
    var errorMessage = exception + "\n" + xhr.status + "\n" + errorType; 
    alert(errorMessage); 
}); 

`

一旦我能夠解決PHP中的$ _FILES變量,一切都開始按預期工作。

相關問題