Ik zit even met een dingetje die ik niet kan terug vinden op het forum en hoop hier een antwoord te mogen ontvangen. Vanuit een applicatie kan ik bestand uploaden naar een php upload bestand (plaats ik hieronder), dat werkt prima zonder problemen. Nu kan ik in deze applicatie weinig veranderen, wel de headers die meegestuurd aanpassen en een toevoegen, wat ik wil is dat het upload/ path aangepast word afhankelijk van de header, voorbeeld: er word een header mee gestuurd met header('Location: 'ditiseentest); dan zou het bestand wat gepload worden moeten worden geplaatst in de map: $upload_path = 'upload/ditiseentest/'; // mappen zijn aanwezig en hoeven niet worden aangemaakt.

Zijn hier wat voorbeelden van of uitleg van iemand mij hierin kan helpen?


<?php


header("Acess-Control-Allow-Origin: *");
header("Acess-Control-Allow-Methods: POST");
header("Acess-Control-Allow-Headers: Acess-Control-Allow-Headers,Content-Type,Acess-Control-Allow-Methods, Authorization");

$data = json_decode(file_get_contents("php://input"), true); // collect input parameters and convert into readable format
	
$fileName  =  $_FILES['file']['name'];
$tempPath  =  $_FILES['file']['tmp_name'];
$fileSize  =  $_FILES['file']['size'];
		
if(empty($fileName))
{
	$errorMSG = json_encode(array("message" => "please select image", "status" => false));	
	echo $errorMSG;
}
else
{
	$upload_path = 'upload/'; // set upload folder path 
	
	$fileExt = strtolower(pathinfo($fileName,PATHINFO_EXTENSION)); // get image extension
		
	// valid image extensions
	$valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); 
					
	// allow valid image file formats
	if(in_array($fileExt, $valid_extensions))
	{				
		//check file not exist our upload folder path
		if(!file_exists($upload_path . $fileName))
		{
			// check file size '5MB'
			if($fileSize < 5000000){
				move_uploaded_file($tempPath, $upload_path . $fileName); // move file from system temporary path to our upload folder path 
			}
			else{		
				$errorMSG = json_encode(array("message" => "Sorry, your file is too large, please upload 5 MB size", "status" => false));	
				echo $errorMSG;
			}
		}
		else
		{		
			$errorMSG = json_encode(array("message" => "Sorry, file already exists check upload folder", "status" => false));	
			echo $errorMSG;
		}
	}
	else
	{		
		$errorMSG = json_encode(array("message" => "Sorry, only JPG, JPEG, PNG & GIF files are allowed", "status" => false));	
		echo $errorMSG;		
	}
}
		
// if no error caused, continue ....
if(!isset($errorMSG))
{
	$query = mysqli_query($conn,'INSERT into tbl_image (name) VALUES("'.$fileName.'")');
			
	echo json_encode(array("message" => "Image Uploaded Successfully", "status" => true));	
}

?>


Wordt de locatie bepaald via een HTTP-header? Dan kan je die achterhalen met getallheaders() die een array teruggeeft.

Verder is het access met twee c's en twee s'en!

[size=xsmall]Toevoeging op 17/04/2023 19:56:15:[/size]

En denk ook aan SQL-injection preventie!
thanks, zijn hier voorbeelden van of uitleg hier op de forum? kan zelf zo niet vinden, ook google laat niet zo gek veel zien, dan je wel
Wat doe je met $data?

het suggereert dat je op een heel basic-manier de data probeert in te lezen, maar vlak daarna gebruik je toch $_FILES.
Waarom dan niet ook een $_POST['path'] waarin je een voorkeurspath op kunt geven?

Je kúnt natuurlijk een header gebruiken, en daarmee blokkeer je eventueel misbruik van je upload script, maar dat is wat lastiger.
Nou ik ben het een en ander aan leren/onderzoeken hoe het een en ander werk, dit zal ongetwijfeld een goede keuze zijn, voor mij nieuw in ieder geval. Vanuit de applicatie kunnen gebruikers een bestanden uploaden maar komt voor ieder in een aparte map, vandaar ik nu zoek naar een mogelijk oplossing. Het is puur hobby en ben niet zo erg ervaren hierin maar des te leuker om het een en ander te gaan onderzoeken en proberen. Wel kan in body nog wat mee sturen, een id van deze software bijvoorbeeld. Ontzettend bedankt voor de info, ik ga er mee verder stoeien.
Als elke gebruiker een eigen map heeft, dan weet je de naam van die map toch al op voorhand.
Kan zijn : naam, id, klantnummer, een ander uniek nummer, etc.
Je wilt sowieso niet dat elke klant zelf zijn map-naam kiest:
Dan heb je er zo een paar die hun map "mijn-foto's" noemen, of "marcels-documenten".

Daarbij wil je waarschijnlijk ook niet dat mensen tekens als ' of / in hun mapnaam opnemen.

of iets als "../../../etc/httpd/httpd.conf/"
De klant hoeft niet te kiezen.
De naam heeft ie opgegeven toen ie klant werd.
En de leestekens haal je er uit.
Klopt, als men de applicatie start moet men eerst haar/zijn naam invoeren, deze naam komt overeen met de map achter upload/
echter men kan zelf niet in de applicatie doen of aanpassen, de naam word mee gestuurd bij het uploaden van bestanden, dus het komt hier op de PHP pagina aan. nu is voor mij even uitzoeken, hoe koppel in de naam, die gestuurd is zodanig aan de php script dat hij niet naar upload/ zijn bestanden plaats maar naar upload/naam waarbij naam de naam van de persoon is zijn naam eerder heeft opgegeven. dat is een beetje de bedoeling.
Ik snap niet wat de header ermee te maken heeft? Of gaat het via een API waarmee de gebruiker zich via een header identificeert?

Je kan toch voor in move_uploaded_file() een pad defineren.
$target_dir = "uploads/".$username."/";

Reageren