我查看了许多关于将文件上传到远程目录(通过 GoDaddy 托管;Windows 机器)的问题的帖子,但未能成功实施这些更改。
这是我想要做的。我编写了一个非常简单的 PHP 来将本地 KML 文件上传到远程 GoDaddy 目录。我这样做是为了为 KML 创建一个面向公众的 URL,然后可以将其添加到我的 Google 地图应用程序中。
我做过的事情:
- 确保权限允许“写入”到我上传到的目录。
- 通过上传到我网站上的目录来测试 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?
先感谢您!