Witam. Mam taki kod jak poniżej, który odbiera pliki z forma, hashuje je ładnie md5, po czym umieszcza w ktalogu nazwijmy to klienta do którego się odnoszš (jeżeli trzeba to tworzy nowy katalog), natomiast wszystke dane jak nazwa,typ MIME, właciciel pliku, rozmiar, i hash po którym ma szukać w katalogu - wszystkie te dane zapisuje w MySQL.
<?php
?>
<html>
<head>
<title>Upload File To MySQL Database</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.box {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
border: 1px solid #000000;
}
-->
</style>
</head>
<body>
<?
//print $_SESSION['user_db'];
//print $_SESSION['ident'];
if(isset($_POST['upload'])) {
foreach($_FILES['userfile']['error'] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$fileName = $_FILES['userfile']['name'][$key];
$tmpName = $_FILES['userfile']['tmp_name'][$key];
$fileSize = $_FILES['userfile']['size'][$key];
$fileType = $_FILES['userfile']['type'][$key];
if ($fileName==NULL) {print "An error has ocured during sending<script language='javascript'>alert('Nie zaznaczono pliku do wysyłki'); history.back();</script>r"; brak
;} else {
//move_uploaded_file($tmpName,"upload/$fileName");
//$fileName="upload/$fileName";
$handle = fopen('users.dat','r'); foreach ($users_f as $values_name)
{
list
($user_loged, $user_data) = explode (':',$values_name);if ($user_loged==$_SESSION['user_db']) {
$uzytkownik=substr($user_data,0
,30
); }
}
$fp = fopen($tmpName, 'r'); $content = fread($fp, $fileSize);
{
}
$root_directory = "./upload/".$_SESSION['ident']."/";
if (is_dir($root_directory)) { if ($dh = opendir($root_directory)) { $filePath = $root_directory . $fileName;
//print $randName;
$fullName=$randName.'.'.$ext;
$filePath = $root_directory . $randName . '.' . $ext;
$fullName=$randName.'.'.$ext;
$filePath = $root_directory . $randName . '.' . $ext;
}
}
}
else
{
$make_contain = mkdir($root_directory, 0755
);
if ($make_contain)
{
$filePath = $root_directory . $fileName;
//print $randName;
$fullName=$randName.'.'.$ext;
$filePath = $root_directory . $randName . '.' . $ext;
$fullName=$randName.'.'.$ext;
$filePath = $root_directory . $randName . '.' . $ext;
}
}
}
include_once 'library/config.php';
include_once 'library/opendb.php';
$query = "INSERT INTO upload (name, size, type, userval,login,id_klienci, hash ) ".
"VALUES ('$fileName', '$fileSize', '$fileType','$uzytkownik','$_SESSION[user_db]','$_SESSION[ident]','$fullName')";
//include 'library/closedb.php';
echo "<br>File $fileName uploaded<br><script>alert('File was uploaded in database'); document.location.href='./download.php';</script>"; }
}
else {
print "<script type='text/javascript' language='javascript'>alert('Wystapil Blad:"; switch($_FILES['userfile']['error'][$key]) {
case UPLOAD_ERR_FORM_SIZE:
echo ("Pzrekroczono maksymalny dozwolony rozmiar pliku!"); break;
case UPLOAD_ERR_PARTIAL:
echo ("Odebrano tylko fragment pliku!"); break;
case UPLOAD_ERR_NO_FILE:
echo ("Plik nie zostal pobrany!"); break;
default:
echo ("Nieznany typ bledu!"); }
print "'); history.back();</script>r"; }
}
}
?>
I tak jak napisałem powyżej, wszystko ładnie działa, z tym, że chciałem teraz dodać również rozróżenienie kategorii do każdego pliku. tzn. formularz powiększył by się o nowe pole lub listę rozwijanš. Teraz jak obsłużyć odbiór kategorii w kodzie powyżej, aby do każdego pliku dodać również odpowiedniš kategorię. Jak w ogóle najlepiej obsłużyć to w samym formularzu, gdyż jak się domylam nie może być pole o takiej samej nazwie category do kliku plików, gdyz skrypt to napewno zinterpretuje le jeli chodzi o to co przele zmienna $_POST[].
function enum($table, $field)
{
$result = @mysql_query("show columns from {$table} like \"$field\"");
$result = @mysql_fetch_assoc($result);
if($result["Type"])
{
preg_match("/(enum((.*?)))/", $result["Type"], $enumArray);
$getEnumSet = explode("'", $enumArray["2"]);
$getEnumSet = preg_replace("/,/", "", $getEnumSet);
$enumFields = array();
foreach($getEnumSet as $enumFieldValue)
{
if($enumFieldValue)
{
$enumFields[] = $enumFieldValue;
}
}
return $enumFields;
}
return "Unable to get enum FIELD {$field} from table {$table}";
}
<input type="hidden" name="MAX_FILE_SIZE" value="20000000">
<span id='filearea'><input name="userfile[]" type="file" class="box" id="userfile">
Kategoria:<select name='category' id='category' style='display:inline;'>
<?
$category_items=enum("upload","category");
foreach ($category_items as $aKeym => $aValuem)
{
{
print "<option value='".$aValuem."'>".$aValuem."</option>r"; }
}
include 'library/closedb.php';
?>
</select>