我使用PHP为FileMaker数据库创建网站。我想要做的是上传一个图像文件,以便数据库可以访问它。
这是我的代码(来自教程):
if (isset($_POST['action']) and $_POST['action'] == 'Upload') {
# set the destination directory for the image
$image_directory = 'http://mydomain.com/Images/My_Example/';
# set the temp and dest file names with paths
$temporary_file = $_FILES['new_image']['tmp_name'];
$destination_file = $image_directory . $_FILES['new_image']['name'];
# move file to the images directory
$result = move_uploaded_file($temporary_file, $destination_file);
if ($result) {
# insert the URL into the product record
$edit = $fm->newEditCommand('Product', $_REQUEST['recid']);
$edit->setField('Thumbnail URL', $destination_file);
$edit->execute();
} else {
$error_message = nl2br("temporary_file = ".$temporary_file."\n");
$error_message.= nl2br("destination_file = ".$destination_file."\n\n");
echo $error_message;
die('There was an error moving the file.');
}
}
我理解函数' move_uploaded_file()'将移动临时文件,但我无法看到实际上传到临时文件的语句。我错过了什么? (我不知道这是不是红鲱鱼!)
但是' move_uploaded_file()'失败,我收到错误消息(我添加了尝试调试它)和' die'信息。有没有办法得到错误代码,告诉我为什么它失败了?
我确信相关目录确实具有读/写访问权限。并且' mydomain.com'实际上被脚本中的真实域所取代。
感激地收到任何建议。我是PHP的新手,所以请在回答时牢记这一点!非常感谢。
干杯
答案 0 :(得分:1)
您正在使用目标目录路径' http://mydomain.com/Images/My_Example/',这将无效。 为了保存文件,你需要在服务器上给它一个绝对路径 - 意味着如果DOCUMENT_ROOT文件夹是" / var / www / html /",那么你需要上传它to" / var / www / html / Images / My_Example'。 您可以使用php中的phpinfo()命令或apache.conf文件检查$ _SERVER [' DOCUMENT_ROOT']变量中的DOCUMENT_ROOT路径。 您还需要确保您的php对您要保存的文件夹具有写入权限。
答案 1 :(得分:0)
问题出在这句话中:
$image_directory = 'http://mydomain.com/Images/My_Example/';
上传文件时,无法在目标路径中提供网址。您需要使用相对路径,如:
$image_directory = './Images/My_Example/';
答案 2 :(得分:0)
首先:尝试这些错误消息
错误信息在:$ _FILES ['upfile'] ['error']
switch ($_FILES['upfile']['error']) {
case UPLOAD_ERR_OK:
break;
case UPLOAD_ERR_NO_FILE:
throw new RuntimeException('No file sent.');
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
throw new RuntimeException('Exceeded filesize limit.');
default:
throw new RuntimeException('Unknown errors.');
}
其次:http://mydomain.com/Images/My_Example/不是虚假的上传路径。
答案 3 :(得分:0)
http://mydomain.com/Images/My_Example/无效,因为它是一个网址路径。您需要指定目录路径:
//$image_directory = 'http://mydomain.com/Images/My_Example/';
// change to:
$image_directory = 'path/to/Images/folder/';