Php 将kml文件上载到GoDaddy托管的远程目录时出现问题
我已经查看了很多关于将文件上传到远程目录(通过GoDaddy;windows机器托管)的帖子,但是没有成功实现更改 这就是我要做的。我编写了一个非常简单的PHP,将本地KML文件上传到远程GoDaddy目录。我这样做是为了为KML创建一个面向公众的URL,这样就可以将它添加到我的Google地图应用程序中 我所做的事情:Php 将kml文件上载到GoDaddy托管的远程目录时出现问题,php,jquery,ajax,post,Php,Jquery,Ajax,Post,我已经查看了很多关于将文件上传到远程目录(通过GoDaddy;windows机器托管)的帖子,但是没有成功实现更改 这就是我要做的。我编写了一个非常简单的PHP,将本地KML文件上传到远程GoDaddy目录。我这样做是为了为KML创建一个面向公众的URL,这样就可以将它添加到我的Google地图应用程序中 我所做的事情: 确保权限允许“写入”我上载到的目录 通过上传到我网站上的一个目录来测试PHP。这是可行的,但该网站不是面向公众的(因此它不会在地图上覆盖KML,因此我现在试图上传到GoDad
- 确保权限允许“写入”我上载到的目录
- 通过上传到我网站上的一个目录来测试PHP。这是可行的,但该网站不是面向公众的(因此它不会在地图上覆盖KML,因此我现在试图上传到GoDaddy)
- 重写了我的AJAX post函数以使用不同的数据类型(显然,这是其他GoDaddy用户在上传文件时的修复方法)
- 将.kml MIME类型添加到GoDaddy web.config
- 如果我使用FTP文件管理器,并手动将KML放置在目录中,它可以访问并加载到我的地图上
- 显然,PHP之所以能够工作是因为my.done()函数在尝试上载后激发
- 我无法登录GoDaddy的客户经理,因为只有我们的网站管理员(碰巧他不在办公室)知道这些信息
- 在PHP中,除了阅读教程、创建Hello World页面和邮件表单之外,我从未使用过它
$.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):
我一直在犹豫是否在这里发布,因为我确信我能找到答案,但老实说,我已经从无数个小时的尝试和错误中迷失了方向
我的问题是:
在语法方面有什么不正确的地方吗
你们中有没有人遇到过类似的问题,如果有,你能做些什么来解决这个问题
是否可能是因为在测试上载时我使用的是localhost而存在此问题
提前谢谢你 一旦我发现tmp_name值为null,我就开始寻找更好的错误处理方法来添加到我的PHP中 我最终将我的PHP改为: `代码 `
一旦我能够解析PHP中的$\u FILES变量,一切都开始按预期工作。您的问题到底是什么?您收到错误消息了吗?可能不清楚,但我的问题是(以及与此相关的问题)。。。为什么这不起作用?这是显而易见的吗?你会做些不同的事情吗?我只需要知道我是否正确地处理了这个问题,或者我需要重新思考一些事情吗?你(或其他人)以前处理过这个问题吗?没有要报告的错误消息。它只是不移动上传的文件。我需要知道为什么。如果您需要更多信息,请告诉我。这可能是协议问题吗?调试时,我的网站URL正在使用localhost。但我已经读到一个域名至少需要有2个“.”。那么,我的网站是否可能因为没有真正的域而无法访问PHP脚本?如果是这种情况,我不明白为什么AJAX会成功返回。想法?当我呼应tmp_的名字时没有任何价值,所以我认为这是在深入挖掘问题所在。我上传的数据是一个文件:var数据;数据=新表单数据();data.append('file',$('#file')[0].files[0]);其中#file是我的文件输入。我应该在php或javascript/JQuery中以不同的方式调用该文件吗?
<?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']);
}
?>
<?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 "}";
?>
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);
});