Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze skryptem uploadu
Forum PHP.pl > Forum > Gotowe rozwiązania
binio
Witam

Mam skrypt do uploadu plikow na serwer.
Nazywa sie Upload Manager. Fajny skrypt, dziala niezle, mozna usuwac, dodawac pliczki na serwer.

Niestety ten skrypt zapisuje pliki z atrybutami 600 i potem nie moge nic z tym zrobic. Jedynie skasowac ponownie managerem uploadu.

[php:1:e3342d696d]<?php
if (!empty( $_SERVER["PHP_SELF"] )) $PHP_SELF = $_SERVER["PHP_SELF"];
require( "inc/upload_manager.class.php" );
$my_upload_manager = new upload_manager();
$my_upload_manager->um_list["um0815"]["base_dir"] = "img";
$my_upload_manager->um_list["um0815"]["return_url"] = "$PHP_SELF?do=upload";
$my_upload_manager->um_list["um0815"]["files_for_upload"][".gif"] = "ico_gif.gif";
$my_upload_manager->um_list["um0815"]["files_for_upload"][".jpg"] = "ico_jpg.gif";
$my_upload_manager->um_list["um0815"]["files_for_upload"][".html"] = "ico_html.gif";
$my_upload_manager->um_list["um0815"]["files_for_upload"][".htm"] = "ico_html.gif";
$my_upload_manager->um_list["um0815"]["max_file_size"] = 1000000;
$my_upload_manager->show("um0815");
if ($do == "upload" )
{
$my_upload_manager->um_list["um0815"]["return_url"] = "$PHP_SELF?do=upload_routine";
echo "".$my_upload_manager->link("um0815","UploadManager","_blank")."<br>";
}

?>[/php:1:e3342d696d]

to kod pliku glownego ale korzysta jeszcze z pliku upload_manager.class.php

[php:1:e3342d696d]<?php
class upload_manager
{
var $um_list = array();
var $base_dir = "";
var $file_types = "";
var $max_file_size = "";

function prepare_file_check()
{
$keys = array_keys( $this->um_list[$this->um_key]["files_for_upload"] );
$this->filecheck_uploads = ""; $fe = true;
foreach ($keys as $key)
{
if ($fe)
{
$this->filecheck_uploads .= $key . '$';
$fe = false;
}
else $this->filecheck_uploads .= "|".$key.'$';
}

$this->max_file_size = $this->um_list[$this->um_key]["max_file_size"];
}

function file_upload()
{
global $PHP_SELF, $HTTP_GET_VARS, $HTTP_POST_VARS, $_FILES;

if ( $_FILES['file1']['error'] == 1 )
{
echo "Za duży rozmiar pliku!<br>";
exit;
}

if ( empty( $_FILES['file1']['tmp_name'] ) )
{
echo "Nie wybrano pliku! '".$_FILES['file1']['name']."'...<br>";
exit;
}
if (!ereg( $this->filecheck_uploads, strtolower($_FILES['file1']['name'] ) ) )
{
echo "Niedozwolony typ pliku!<br>";
exit;
}

if ( !move_uploaded_file( $_FILES['file1']['tmp_name'], $this->base_dir . '/' . $_FILES['file1']['name'] ) )
{
echo "Error uploading '".$_FILES['file1']['name']."'...<br>";
exit;
}
else
{
echo $_FILES['file1']['name']. "was sucessfully uploaded...<br>";

echo '<meta http-equiv="refresh" content="0;URL='.$PHP_SELF."?jum_do=show&$um_key=$this->um_key">n";
}
}

function file_remove()
{
global $PHP_SELF, $HTTP_GET_VARS, $HTTP_POST_VARS;

if ( !empty( $HTTP_POST_VARS["selected_file"] ) )
$selected_file = $HTTP_POST_VARS["selected_file"];
else
{
echo "Nie wybrano pliku do usunięcia<br>";
exit;
}
$working_dir = @dir( $this->base_dir );
$count = 1;
$options_str = "";
while ( $entry = $working_dir->read() )
{
if (!is_dir($entry) )
{
$fak = md5( $count.$entry );

if ($fak == $selected_file)
{
echo "Plik usunięty: $entry...<br>";
if ( !unlink( $this->base_dir.'/'.$entry ))
{
echo "could not remove<br>";
}
else
{
echo "$entry was removed!";
echo '<meta http-equiv="refresh" content="0;URL='.$PHP_SELF."?jum_do=show&$um_key=$this->um_key">n";
}
}
$count++;
}
}
}

function uploadform()
{
global $PHP_SELF;

$working_dir = @dir( $this->base_dir );
$count = 1;
$options_str = "";
$i = 0;
while ( $entry = $working_dir->read() )
{
if (!is_dir($entry) )
{
$fak = md5( $count.$entry );
$options_str .= ' <option class="line_color'.($i%2).'" value="' . $fak .'">' . $entry . "</option>n";
$count++;
}
$i++;
}

$return_url = $this->um_list["um0815"]["return_url"];
echo <<<UPLOADFORM
<script language="JavaScript" type="text/javascript">
function send_data( selection )
{
var thisform = document.upload_form;
thisform.method = "post";
if ( selection == "upload" )
{
thisform.action = "$PHP_SELF?jum_do=upload";
}
if ( selection == "delete" )
{
thisform.action = "$PHP_SELF?jum_do=delete";
}
if ( selection == "exit" )
{
thisform.action = "$return_url";
}
thisform.submit();
}
</script>

<form name="upload_form" method="post" enctype="multipart/form-data">
<table cellspacing="0" cellpadding="0" bordercolor="#000000" border="0" align="center">
<tr>
<td>
<table width="100%" border="0" cellpadding="2" cellspacing="2">
<tr valign="top" bgcolor="#c0c0c0">
<td>
<select name="selected_file" size="20">$options_str</select>
</td>
<td>
<input type="button" name="delete" value="Usuń plik" onclick="send_data(this.name)" style="WIDTH: 100px">
</td>
</tr>
<tr valign="top">
<td><br>
<br>
<br>
<br>
</td><td></td>
</tr>
<tr valign="top" bgcolor="#c0c0c0">
<td>
<input type="file" name="file1" style="WIDTH: 400px">
<input type="hidden" name="MAX_FILE_SIZE" value="$this->max_file_size">
</td>
<td>
<input type="button" name="upload" value="Dodaj plik" onclick="send_data(this.name);" style="WIDTH: 100px">
</td>
</tr>
</table>
</td>
</tr></table>
</form>
UPLOADFORM;
}
function link( $um_key, $link_title, $link_target )
{
global $PHP_SELF;
$xs_link = '<a href="'.$PHP_SELF."?jum_do=show&um_key=$um_key">".$link_title.'</a>';
return $xs_link;
}
function show( $um_key )
{
global $HTTP_GET_VARS;
if (!empty( $HTTP_GET_VARS["jum_do"] ) )
$this->do = $HTTP_GET_VARS["jum_do"];
else
$this->do = "nothing";
if ( !empty( $HTTP_GET_VARS["um_key"] ) )
$this->um_key = $HTTP_GET_VARS["um_key"];
else
$this->um_key = $um_key;
if ($this->do != "nothing")
{
$this->prepare_file_check();
echo "<div>n";
if ( empty($this->um_list[$this->um_key]["base_dir"] ) )
{
echo "Error </b><br>";
exit;
}
$this->base_dir = $this->um_list[$this->um_key]["base_dir"];
if (!$folder = @dir( $this->base_dir ))
{
echo "Error<br>";
exit;
}
switch ($this->do)
{
case "show" : $this->uploadform(); break;
case "delete" : $this->file_remove(); break;
case "upload" : $this->file_upload(); break;
}
echo "</div>n";
exit;
}
}
}
?>[/php:1:e3342d696d]

Nie wiem czy da sie to ustawic, ja niestety nie potrafie sad.gif
BzikOS
Spróbuj użyć umask().
Tips: w okolicach linii 46 smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.