Как переименовать файл при загрузке на сервер, используя RecordID с Filemaker Server

Привет, ребята. У меня проблема с сайтом базы данных Filemaker, который у меня есть. У меня есть форма, которая позволяет пользователям вводить некоторые данные и отправлять их в базу данных создателя файла (на этом этапе создается идентификатор записи). На следующей странице отображаются сведения о пользователях, и на странице отображается RecordID, на следующей странице пользователь может загрузить файл на сервер, все это работает, но я хочу иметь возможность переименовать файл при загрузке на тот же в качестве идентификатора записи, чтобы мы могли связать загрузки файлов с записями в базе данных.

Итак, в настоящее время у меня есть три страницы, страница addRecord, которая позволяет пользователю вводить их данные, страница подтверждения, которая отображает данные пользователя и имеет ссылку на страницу загрузки, и, наконец, страница загрузки, которая позволяет пользователю загружать изображение. Весь код в настоящее время работает, но я не могу понять, как загрузить изображение с именем ранее созданного RecordID.

Вот форма, которую я должен предоставить данные пользователя:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<?php
require_once 'fmview.php';
require_once 'FileMaker.php';
require_once 'error.php';

$cgi = new CGI();
$cgi->storeFile();

$databaseName = ‘database’;
$layoutName = ‘layout’;

$userName = ‘*********’;
$passWord = ‘*********’;

$fm = & new FileMaker();
$fm->setProperty('database', $databaseName);
$fm->setProperty('username', $userName);
$fm->setProperty('password', $passWord);

ExitOnError($fm);
$layout = $fm->getLayout($layoutName);
ExitOnError($layout);

// formats for dates and times
$displayDateFormat = '%d/%m/%Y';
$displayTimeFormat = '%H:%M:%S';
$displayDateTimeFormat = '%d/%m/%Y %H:%M:%S';
$submitDateOrder = 'mdy';

class EmptyRecord {
function getRelatedSet($relationName) {
return array(new EmptyRecord());
}

function getField($field, $repetition = 0) {
}

function getRecordId() {
}
}

$record = new EmptyRecord();
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>
Add Record
</title>
<link rel="stylesheet" type="text/css" media="screen" href="agentis.css">
</head>
<body>
<div id="header">
Database
</div>
<div id="content">
<?php include_once 'navigation.php'; ?>
<table cellpadding="0" cellspacing="0" class="contentbg">
<tr>
<td class="contentmidrecords">
<div id="contenttitlebg">
<h1>
Add Record
</h1>
</div>
</table>
<div class="scrolladd">
<table cellpadding="1" cellspacing="0" class="recwidth">
<tr>
<td valign="top">
<form method="post" action="confirmation.php">
<div>
<input type="hidden" name="-db" value="<?php echo $databaseName ?>"> <input type="hidden" name="-lay" value=
"<?php echo $layoutName ?>"> <input type="hidden" name="-action" value="new">
</div>
<table cellpadding="1" cellspacing="6" class="record">
<!-- Display record field values -->
<tr class="field">
<td class="field_name">
Name
</td>
<td class="field_data">
<?php $fieldValue =          $record->getField('Name', 0) ; ?><input class="fieldinput" type="text" size="30" name=
"<?php echo getFieldFormName('Name', 0, $record, true, 'EDITTEXT', 'text');?>" value="<?php echo $fieldValue;?>">
</td>
</tr>
<tr class="field">
<td class="field_name">
Email
</td>
<td class="field_data">
<?php $fieldValue =          $record->getField('Email', 0) ; ?><input class="fieldinput" type="text" size="30" name=
"<?php echo getFieldFormName('Email', 0, $record, true, 'EDITTEXT', 'text');?>" value="<?php echo $fieldValue;?>">
</td>
</tr>
<tr class="field">
<td class="field_name">
Record ID
</td>
<td class="field_data">
<?php $fieldValue =          $record->getField('Record ID', 0) ; ?><?php echo nl2br( $record->getField('Record ID', 0) )?>
</td>
</tr>
<tr class="field">
<td class="field_name">
Upload
</td>
<td class="field_data">
</td>
</tr>
<!--Display record form controls-->
<tr class="field">
<td class="field_name">
&nbsp;
</td>
<td class="field_data">
<input type="submit" class="buttons" name="-new" value="Save Record"> <input type="reset" class="buttons" name="Reset"value="Reset"> <input type="button" class="buttons" onclick="window.location='home.php'" name="Cancel" value="Cancel">
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
</td>
</table>
</div>
</body>
</html>

Вот страница подтверждения:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<?php
require_once 'fmview.php';
require_once 'FileMaker.php';
require_once 'error.php';

$cgi = new CGI();
$cgi->storeFile();

$databaseName = ‘database’;
$layoutName = ‘layout’;

$userName = ‘*******’;
$passWord = ‘*******’;

$fm = & new FileMaker();
$fm->setProperty('database', $databaseName);
$fm->setProperty('username', $userName);
$fm->setProperty('password', $passWord);

ExitOnError($fm);
$layout = $fm->getLayout($layoutName);
ExitOnError($layout);

// formats for dates and times
$displayDateFormat = '%d/%m/%Y';
$displayTimeFormat = '%H:%M:%S';
$displayDateTimeFormat = '%d/%m/%Y %H:%M:%S';
$submitDateOrder = 'mdy';

// create the new add command
$newrecordrequest = $fm->newAddCommand($layoutName);
ExitOnError($newrecordrequest);

// get the submitted record data
$recorddata = $cgi->get('recorddata');
if (isset ($recorddata)) {

//  submit the data to the db
$result = submitRecordData($recorddata, $newrecordrequest, $cgi, $layout->listFields());

//  clear the stored record data
$cgi->clear('recorddata');
ExitOnError($result);
if ($result->getFetchCount() > 0) {
$records = $result->getRecords();
$record = $records[0];
}
}
ExitOnError($record);
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" media="screen" href="agentis.css">
<title>
Confirmation
</title>
</head>
<body>
<div id="header">
Database
</div>
<div id="content">
<!--Navigation Menu-->
<?php include_once 'navigation.php' ?>
<table cellpadding="0" cellspacing="0" class="contentbg">
<tr>
<td class="contentmidrecords">
<div id="contenttitlebg">
<h1>
Confirmation
</h1>
</div>
<table class="message" cellpadding="2" cellspacing="2">
</table>
<div class="scrolladd">
<form action="upload.php" method="post" enctype="multipart/form-data">
<table cellpadding="1" cellspacing="0" class="recwidth">
<tr>
<td valign="top">
<table cellpadding="1" cellspacing="6" class="record">
<!-- Display record field values -->
<tr class="field">
<td class="field_name">
Name
</td>
<td class="field_data">
<?php echo nl2br(storeFieldNames('Name', 0, $record, true, 'EDITTEXT', 'text'))?>
</td>
</tr>
<tr class="field">
<td class="field_name">
Email
</td>
<td class="field_data">
<?php echo nl2br(storeFieldNames('Email', 0, $record, true, 'EDITTEXT', 'text'))?>
</td>
</tr>
<tr class="field">
<td class="field_name">
Record ID
</td>
<td class="field_data">
<?php echo nl2br(storeFieldNames('Record ID', 0, $record, false, 'EDITTEXT', 'number'))?>
</td>
</tr>
<tr class="field">
<td class="field_name">
Upload
</td>
<td class="field_data">
<!--  Upload image: <input name="new_image" type="file" > -->
<input type="submit" name="upload" value="Upload Image Here" >
</form>
</table>
</div>
</body>
</html>

Вот страница загрузки файла:

<!DOCTYPE html>
<html>
<body>

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload" class="upload_file">
<input type="submit" value="Upload Image" name="submit">
</form>
<?php

// Check if image file is a actual image or fake image
if(isset($_POST["submit"]))
{

$target_dir = "uploads/";
$target_file = $target_dir . '_'. $_FILES["fileToUpload"]["name"];
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false)
{
echo "File is an image - " . $check["mime"] . ". ";
echo '<a href="'.$target_file.'">View your uploaded file here</a>';
$uploadOk = 1;
}
else
{
echo "File is not an image.";
$uploadOk = 0;
}

// Check if file already exists
if (file_exists($target_file))
{
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000)
{
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"&&         $imageFileType != "gif" )
{
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0)
{
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
}
else
{
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file))
{
echo " The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
}
else
{
echo "Sorry, there was an error uploading your file.";
}
}
}
?>
</body>
</html>

Любые идеи будут высоко ценится.

Просто чтобы уточнить, у меня нет проблем с переименованием файлов при загрузке в целом, только как я могу ввести здесь параметр с предыдущей страницы, в частности, идентификатор записи, созданный из Filemaker

Спасибо

0

Решение

В тот момент, когда вы сохраняете загруженный файл, вы можете переименовать его. Я использовал функцию move_uploaded_file (http://php.net/manual/en/function.move-uploaded-file.php), чтобы указать место назначения с новым именем файла. Поскольку вы уже передаете идентификатор записи в качестве параметра, вы сможете получить его с помощью $ _REQUEST [‘ID записи’], если добавите его в качестве скрытой формы ввода.

1

Другие решения

На самом деле я не очень разбираюсь в php и о создателе файлов, но как только я закончил загружать картинки и сохранять их после переименования, вот так

$params = $this->input->post();
$path_to_upload_folder = BASEPATH . '../assets/user_docs/';
$licence_path = $path_to_upload_folder . 'licence_' . $current_time . '.jpg';
base64_to_jpeg($params['licence'], $licence_path);

Надеюсь, что это поможет вам…

0

По вопросам рекламы [email protected]