Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Log: POST Content-Length
Forum PHP.pl > Forum > PHP
e-konrad
Witam,
w jaki sposób mogę wyłączyć wyświetlanie warna: PHP Warning: POST Content-Length

Pomimo wyłączonego raportowania błędów, ten wyświetla się zawsze gdy wysyłany jest zbyt duży plik
rad11
Zwieksz post_max_size
http://stackoverflow.com/questions/1171949...it-of-8388608-b
e-konrad
Chcę aby można było maksymalnie przesłać plik 300KB, pomimo poniższego inputa formularz zaciąga plik większy i wyrzuca mi komunikat jak w temacie

<input type="hidden" name="MAX_FILE_SIZE" value="307200" />
salfunglandyare
Ten element za wiele Ci nie da, a już na pewno nie wyświetli żadnego ostrzeżenia przed wysłaniem pliku. Jeśli chcesz przeprowadzić walidację po stronie klienta, musisz skorzystać z JS. Mimo to ogranicz również po stronie serwera (drugi stopień walidacji)
e-konrad
Problem w tym że używam funkcji js do zastąpienia standardowego inputa i przycisku: wybierz plik

[script]
$(function() {
//dla każdego input:file
$('input:file').each(function(){
var $this = $(this);

//pobieramy tekst dla buttona
var labeltext = ($this.attr('title')!='' && $this.attr('title')!=undefined)?$(this).attr('title'):'Wybierz plik';

//całość okryjemy divem, żeby wszystko stanowiło całość
var $fileContainer = $('<div class="file-container"></div>');

//input tekstowy
var $text_file = $('<input class="file-input-text" type="text" value="..." />');

//button "przeglądaj" do którego wstawiamy text labelki pobrany powyżej
var $uploadbutton = $('<input class="file-input-browse" type="button" value="'+labeltext+'" />');

//input file okrywamy divem
$this.wrap($fileContainer);

//do diva wstawiamy input tekstowy i button
$this.parent('.file-container').append($text_file).append($uploadbutton);

//dla naszego ukrytego input file wywołujemy akcję, która wstawi jego wartość do inputa tekstowego
$this.bind('change focus click', function() {
//czemu nie sibling? jeżeli użyjemy pluginu do stylowania formularz takiego jak jqtransform,
//wtedy nasz input text zostanie zmieniony w sito, dlatego musimy go wyszukiwać w parencie.
$this.parent().find('.file-input-text').val($this.val().replace("C:\\fakepath\\", ""));
});
});
});

$(document).ready(function()
{

var options = {
beforeSend: function()
{
$("#progress").show();
//clear everything
$("#bar").width('0%');
$("#message").html("");
$("#percent").html("0%");
},
uploadProgress: function(event, position, total, percentComplete)
{
$("#bar").width(percentComplete+'%');
$("#percent").html(percentComplete+'%');


},
success: function()
{
$("#bar").width('100%');
$("#percent").html('100%');
location.reload();

},
complete: function(response)
{
$("#message").html("<font color='green'>"+response.responseText+"</font><br /><b>Trwa odświeżanie danych...</b>");
//$("#message").html("<b>Trwa odświeżanie danych...</b>");

},
error: function()
{
$("#message").html("<font color='red'> Błąd: nie można wysłać pliku</font>");

}

};

$("#myForm").ajaxForm(options);

});
[/script]

Mam funkcję która sprawdza rozmiar pliku, ale niedziała funkcja powyższa(wyświetla standardowy przycisk)
[script]
function checkSize(max_img_size)
{
var input = document.getElementById("upload");
if(input.files && input.files.length == 1)
{
if (input.files[0].size > max_img_size)
{
alert("Rozmiar pliku nie może przekraczać 300KB);
return false;
}
}

return true;
};
[/script]

Próbowałem je ze sobą łączyć ale za każdym razem wyświetla mi standardowe pola formularza
salfunglandyare
Spróbuj coś takiego:
Tam gdzie definiujsz opcje dla ajaxForm:
  1. var options = {
  2. beforeSend: function(){
  3. $("#progress").show();
  4. //clear everything
  5. $("#bar").width('0%');
  6. $("#message").html("");
  7. $("#percent").html("0%");
  8. },
  9. //...
  10. };


dodaj
  1. beforeSend : function(){
  2. $('input:file').each(function(){
  3. if(this.files && this.files[0] && this.files[0].size && this.files[0].size > 307200){
  4. alert("Rozmiar pliku nie może przekraczać 300KB);
  5. return false;
  6. }
  7. }
  8. //dalej to co w funkcji
  9. },
  10. //...
e-konrad
  1. var options = {
  2. beforeSend: function()
  3. {
  4. $("#progress").show();
  5. //clear everything
  6. $("#bar").width('0%');
  7. $("#message").html("");
  8. $("#percent").html("0%");
  9. $('input:file').each(function(){
  10. if(this.files && this.files[0] && this.files[0].size && this.files[0].size > 307200){
  11. alert("Rozmiar pliku nie może przekraczać 300KB);
  12. return false;
  13. }
  14. }
  15. },

i niestety przywróciło mi standardowy przycisk "Wybierz plik"
salfunglandyare
Bo zrobiłem błąd, a Ty go przekleiłeś biggrin.gif

alert("Rozmiar pliku nie może przekraczać 300KB); - brakuje zamykającego "
e-konrad
mimo to również przywróciło standardowy wygląd przycisku:/
salfunglandyare
To jeszcze jeden bug smile.gif
Linia 14: zamiast } daj });
Pisałem bezpośrednio w przegladarce, takie bledy zaznacza ide tongue.gif
e-konrad
na końcu dałem tylko }; zamiast }); Działa jak trzeba. Dzięki
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.