Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] nazwa pliku po wysłaniu
Forum PHP.pl > Forum > Przedszkole
sargosa
Mam problem z nazwą pliku po wysłaniu na serwer.
Otóż na serwerze lokalnym (xampp) wszystko pracuje ok.

Problem jest wtedy, gdy skrypt umieszczam na serwerze zewnętrznym (nazwa.pl) i tam pliki po wysłaniu z komputera na serwer przyjmują nieprawidłową nazwę tzn. kropka oddzielająca rozszerzenie i
samo rozszerzenie są dodane do nazwy pliku a miejsce rozszerzenia jest puste. Powodem tego jest brak możliwości porania plików na kompa z bazy danych na serwerze zewnętrznym, ponieważ nie może znależć prawidłowej nazwy pliku czyli nazwa.roz
Na lokanym serwerze jest dobrze a na zewnętrznym jest problem.
Co jest problemem? Ustawienia serwera na www.nazwa.pl ?

po lewej serwer lokalny po prawej zewnętrzny


dołączam kod:

plik dodaj.php

$p_pojemnosc=$_FILES['plik']['size'];//pojemnosc pliku
$p_typ=$_FILES['plik']['type']; // typ pliku
$p_nazwa=$_FILES['plik']['name']; // nazwa pliku
$p_smiec=$_FILES['plik']['tmp_name']; // chwilowa nazwa pliku

//wycinamy rozszerzenie z pobieranego pliku
$p_roz= array_pop(explode(".", $p_nazwa));

/* odbieramy dane z pola ukrytego i zaokrąglamy je do 3 miejsca
po przecinku/dzielimy przez 1204*1024 by było w MB*/
$max_size=round(($_POST['max_file_size']/1048576),3)."MB";


//zaokrąglamy "round" do 2 miejsc po przecinku i przeliczamy rozmiar pliku na MB
$poj_MB=round(($p_pojemnosc/1048576),2).'MB';

//kodujemy nasz plik metodą MD5 i dodajemy date i godzinę oraz rozszerzenie pliku
$p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
$folder="pliki/";

//---Kolorki HTML---
$k_cze="<font color=#ff0000>";
$f_koniec="</font>";
$k_nieb="<font color=#0000ff>";
if ($p_pojemnosc <= 0)
{
echo ("Plik jest pusty nie mogę go przesłać <b>".$k_cze.$p_nazwa." ".$poj_MB.$f_koniec."</b><br />");
echo "<a href=index.php>Wracaj ...</a>";
exit;
}

if ($poj_MB > $max_size)
{
echo("Plik jest za duży maksymalnie można wysłać <b>".$k_cze.$max_size.$f_koniec."</b>"." .Plik wysyłany ma rozmiar <b><i>".$k_nieb.$poj_MB.$f_koniec."</b></i><br />");
echo "<a href=index.php>Wracaj ...";
exit;
}

if (file_exists($folder.$p_nazwa_zm))
{
echo ("Plik o takiej nazwie jest już na serwerku <b><i>".$p_nazwa_zm."</b></i><br />");
echo "<a href=index.php>Wracaj ...";
exit;
}
else {
if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))
exit('Nie mozna zachowac pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapisać');

echo "Przeslanie udało się - <b>".$k_nieb.$p_nazwa."</b>"." ".$poj_MB."<br />"
$path_file=$folder.$p_nazwa_zm;
$conn = mysql_connect('localhost', 'user', 'password') or die('Error connecting to mysql');
mysql_select_db('nazwa_bazy');
$zapytanie=mysql_query("insert into nazwa_tabeli values(NULL,'$p_pojemnosc','$path_file','$p_typ')");
echo "<a href=index.php>Wracaj ...";
}

tutaj kod formularza:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO8859-2">
<title>SendFileToServer-LinkToMySQL</title>
</head>

<body>
<form action="dodaj.php" method="post" enctype="multipart/form-data" name="form1">
<p align="center">Wysyłanie plików na serwer. </p>
<table width="422" border="1" align="center" bordercolor="#0000FF" bgcolor="#C0C0C0">
<tr>
<th width="444" scope="row"><input name="plik" type="file" size="50"/>
<input name="max_file_size" type="hidden" value="1048576" /></th>
</tr>
<tr>
<th scope="row"><input value="Wyślij plik" type="submit" /> </th>
</tr>
</table>
</form>
</body>
</html>

Zaznaczam , że na serwerze lokalnym wszystko działa - problem jest na zewnętrznym.
Na fotce widać różnice.
Pyton_000
A świstak siedzi i zawija je w te sreberka...
kod panie, kod...
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.