Upload plików przez AJAX I PHP ale link do plików to blob

0

Jest możliwe aby wysłać plik do PHP ale link blob typu: "blob//localhost/0be10cc2-0f68-4df7-8a73-6fbbc414490b"

Dlaczego w ten sposób: zrobiłem interface w którym można dodawać i usuwać pliki oraz zmieniać ich kolejność - więc to super działa i jest wygodne i intuicyjne, ale jak to teraz przesłać (inne zmienne tekstowe docierają do php). Oprócz tego mam inne zmienne tekstowe typu:

var data_to_upload = new FormData();      

data_to_upload.append('nazwa', 'przyklad');

data_to_upload.append('kategoria', 'przyklad');

data_to_upload.append('ZDJECIE', 'blob_url');
0

Ale skąd masz ten url? Jak chcesz dane zdjęcia zawrzeć w stringu, czy to link do jakiegoś zasobu? Na co ten url wskazuje? Co się dzieje po wejściu w niego? Przecież nie będzie zawierał on tych danych.

0

część usunąłem - zostawiłem to co ma znaczenie zeby wiadomo było o co chodzi, zatem:

	$('input[type=file]').change(function(event) {    <------- OD RAZU PO WYBORZE PLIKOW 
		
			var files = $(this)[0].files;             <------- WSZYSTKIE WYBRANE PLIKI
		
			var count_files = files.length;  		  <------- POLICZ WYBRANE PLIKI
		
			for(var i = 0; i < count_files; i++) {    <------- UMIEŚĆ PLIKI DO PODGLĄDU (TO DOCHODZI JESZCZE CZY TO PLIKI GRAFICZNE CZY NIE)
				
				var count_current_files = $(".image_preview").length;
				
				if(count_current_files < 5) {
					
					var this_file = URL.createObjectURL(event.target.files[i]); 
					
					$("#image_container_bottom").append("<div class='image_preview'><img width='100%' alt='Image preview' src='" + this_file + "'></div>");  <------- SRC JEST W TAKIEJ FORMIE
				
				}
			
			}
					
	});

albo jak inaczej to zrobić zeby przechowywac chwilowo plik przypisany do okienka/diva podglądu?

0

ale po co to zamieniać w object url? przez formularz i input[type=file] możesz normalnie wysyłać pliki binarnie, bloby są tylko lokalnie, musiałbyś odczytać plik przez FileReader https://stackoverflow.com/a/23024504

0

No masz te pliki przypisane do zmiennej files, które posiadają interfejs File, który dziedziczy interfejs Blob, który posiada metodę arrayBuffer, która zwraca dane binarne.

0

a w drugim evencie gdzie chce subnitować wszystko do pliku (zostawiłem najważniejsze):

		var data_to_upload = new FormData();                  
    	data_to_upload.append('this_name', this_name_val);
		data_to_upload.append('this_tags', this_tags_val);
		data_to_upload.append('this_category', this_category_val);
		data_to_upload.append('this_undercategory', this_undercategory_val);
		data_to_upload.append('this_price', this_price_val);
		data_to_upload.append('this_software', this_software_val);
		data_to_upload.append('this_extension', this_extension_val);
		data_to_upload.append('photos_amount', count_files);	                        <------- WSZYSTKIE ZMIENNE (na koncu ilosc zdjec)
			
		
		if(count_files != 0) {
			for(var i = 0; i < count_files; i++) {
				files_to_upload = $(".image_preview").eq(i).children("img").eq(1).attr("src");
				data_to_upload.append('file_' + i, files_to_upload);                       <------- APPENDUJE wszystkie zdjecia - kazde zdjecie osobno file_0, file_1 ...
			}
		} 

  				$.ajax({    
				type: "POST",
				url: "php_files/admin.php",
				data: data_to_upload,
				processData: false,
				contentType: false,
				cache: false,	
				success: function(data) {    
					
					alert(data);
					
					}
				});
0

Przechowuj gdzieś zawartość $(this)[0].files, potem normalnie możesz to przesłać bez kombinowania data_to_upload.append(files[i].name, files[i]) i odczytać po stronie PHP w $_FILES,

0
obscurity napisał(a):

Przechowuj gdzieś zawartość $(this)[0].files, potem normalnie możesz to przesłać bez kombinowania data_to_upload.append(files[i].name, files[i]) i odczytać po stronie PHP w $_FILES,

ale za kazdym razem $(this)[0].files się resetuje jak wybieram kolejne pliki?

to tak jak teraz po stronie przeglądarki jest prawidłowo?

0
DuzaCzarna napisał(a):

to tak jak teraz po stronie przeglądarki jest prawidłowo?

co?
No to nie przeszkadza w tym żebyś przechowywał zawartość zmiennej w innym miejscu

0

chodzi mi o to czy ajax przesle mi pliki do php prawidłowow?

bo odbieram w php POSTy ale nie wiem jak odebrac pliki

0

jak stansdardowo robie na przyklad cos takiego:

if($_FILES["file_0"]) {			
  echo 'uploaded';
} else {
  echo 'No upload';
}

co daje blad "Notice: Undefined index: file_0 in C:\wa ..." <------ plik który laduje sie to file_0

print_r($_REQUEST) zwraca to:

Untitled.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1