Chcę zaimplementować proste przesyłanie plików na mojej stronie intranetowej przy możliwie najmniejszej konfiguracji.
To jest moja część HTML:
<input id="sortpicture" type="file" name="sortpic" />
<button id="upload">Upload</button>
a to jest mój skrypt jquery JS:
$("#upload").on("click", function() {
var file_data = $("#sortpicture").prop("files")[0];
var form_data = new FormData();
form_data.append("file", file_data);
alert(form_data);
$.ajax({
url: "/uploads",
dataType: 'script',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function(){
alert("works");
}
});
});
W katalogu głównym witryny znajduje się folder o nazwie „uploads”, z uprawnieniami do zmiany dla „users” i „IIS_users”.
Kiedy wybieram plik z formularzem plikowym i naciskam przycisk przesyłania, pierwszy alert zwraca „[object FormData]”. drugi alert nie jest wywoływany, a folder „przesłane” też jest pusty !?
Czy ktoś może pomóc mi dowiedzieć się, co jest nie tak?
Następnym krokiem powinno być również zmiana nazwy pliku na nazwę wygenerowaną po stronie serwera. Może ktoś też da mi na to rozwiązanie.
Odpowiedzi:
Potrzebujesz skryptu działającego na serwerze, aby przenieść plik do katalogu uploads. Metoda jQuery
ajax
(uruchomiona w przeglądarce) wysyła dane formularza na serwer, a następnie skrypt na serwerze obsługuje przesyłanie. Oto przykład użycia PHP.Twój kod HTML jest w porządku, ale zaktualizuj skrypt JS jQuery, aby wyglądał tak:
A teraz czas na skrypt po stronie serwera, w tym przypadku używając PHP.
upload.php : skrypt PHP, który działa na serwerze i kieruje plik do katalogu uploads:
Kilka rzeczy na temat katalogu docelowego:
I trochę o funkcji PHP
move_uploaded_file
, używanej w skrypcie upload.php :$_FILES['file']['name']
to nazwa wysyłanego pliku. Nie musisz tego używać. Możesz nadać plikowi dowolną nazwę (zgodną z systemem plików serwera):I wreszcie, bądź świadomy swoich wartości konfiguracyjnych PHP
upload_max_filesize
ORAZpost_max_size
i upewnij się, że pliki testowe ich nie przekraczają. Oto pomoc, jak sprawdzić konfigurację PHP i ustawić maksymalny rozmiar pliku i ustawienia postów .źródło
form_data.append
funkcji. Więc zmieniłem skrypt PHP, aby odzwierciedlał nową nazwę wejściową formularza. Wyciągnąłem również odpowiedź skryptu PHP do alertu o sukcesie Ajax, aby pomóc w debugowaniu.$_FILES['file']
źródło
źródło
a to jest plik php, który ma otrzymać uaktualnione pliki
źródło
if (true)
robi? Czy wartościowanie zawsze jest prawdziwe, więc jest bezużyteczne, prawda? Masz również dodatkowe kręcone zakończenie.Użyj czystego js
Nazwa pliku jest automatycznie dołączana do żądania i serwer może ją odczytać, „typ zawartości” jest automatycznie ustawiany na „multipart / form-data”. Tutaj jest bardziej rozwinięty przykład z obsługą błędów i dodatkowym wysyłaniem json
Pokaż fragment kodu
źródło
Najlepsze przesyłanie plików przy użyciu Jquery Ajax z Materialize Kliknij tutaj, aby pobrać
Po wybraniu obrazu obraz zostanie przekonwertowany do bazy 64 i możesz go przechowywać w bazie danych, aby był również lekki.
źródło