e-konrad
4.05.2015, 16:50:12
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
4.05.2015, 16:58:16
e-konrad
4.05.2015, 17:35:16
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
4.05.2015, 17:47:28
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
4.05.2015, 17:53:29
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
4.05.2015, 18:17:02
Spróbuj coś takiego:
Tam gdzie definiujsz opcje dla ajaxForm:
var options = {
beforeSend: function(){
$("#progress").show();
//clear everything
$("#bar").width('0%');
$("#message").html("");
$("#percent").html("0%");
},
//...
};
dodaj
beforeSend : function(){
$('input:file').each(function(){
if(this.files && this.files[0] && this.files[0].size && this.files[0].size > 307200){
alert("Rozmiar pliku nie może przekraczać 300KB);
return false;
}
}
//dalej to co w funkcji
},
//...
e-konrad
4.05.2015, 19:29:34
var options = {
beforeSend: function()
{
$("#progress").show();
//clear everything
$("#bar").width('0%');
$("#message").html("");
$("#percent").html("0%");
$('input:file').each(function(){
if(this.files && this.files[0] && this.files[0].size && this.files[0].size > 307200){
alert("Rozmiar pliku nie może przekraczać 300KB);
return false;
}
}
},
i niestety przywróciło mi standardowy przycisk "Wybierz plik"
salfunglandyare
4.05.2015, 19:57:00
Bo zrobiłem błąd, a Ty go przekleiłeś

alert("Rozmiar pliku nie może przekraczać 300KB); - brakuje zamykającego "
e-konrad
4.05.2015, 20:05:43
mimo to również przywróciło standardowy wygląd przycisku:/
salfunglandyare
4.05.2015, 20:23:38
To jeszcze jeden bug

Linia 14: zamiast } daj });
Pisałem bezpośrednio w przegladarce, takie bledy zaznacza ide
e-konrad
4.05.2015, 20:29:23
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.