2017-05-27 2 views
0

NUMÉRO:besoin d'un processus de formulaire automatiquement Renommez Uploaded photo

J'ai un code tampon php qui «noms de mes pages .html formulaire généré, à partir des données dans l'un des champs de formulaire dans mon forme.

<!--Start Buffer-> 
<?php ob_start(); $URL=preg_replace('#[^_0-9a-zA-Z]#', '_', $_REQUEST['timeValue']); ?> 

Ce champ de formulaire particulier est généré automatiquement avec l'horloge actuelle milliseconde unix.

<!--FormPage--> 
    <!--Timevalue/Unix millisecond code/field-> 

    <div class="formElement">TIMESTAMP URL<br><input id="timeValue" name="timeValue"></div> 
    <script src="timeValueURL.js"></script> 

... Par conséquent, mes fichiers .html sont finalement sauvés avec un « nom » (c.-à-nombre.), Qui est le même que quelles que soient les « millisecondes » étaient au moment ma forme était « soumis ».

* Remarque: Mon bouton «Soumettre» met également à jour l'horloge milliseconde lors de la soumission.

Les fichiers .html générés sont ensuite enregistrés dans l'un des répertoires valides; «catégories/actualités», «catégories/sports» ou «catégories/divertissement». Donc, (Exemple) Si le fichier .html est sauvegardé dans le répertoire 'news' ... et l'horloge milliseconde à '1500000000000' quand le formulaire a été soumis ... le fichier .html aurait une URL « mywebsite.com/categories/news/1500000000000.html »


Dans la même forme ... J'ai un champ de téléchargement de fichiers pour mes visiteurs de télécharger un fichier image de leur propre serveur/appareil.

Remarque: Les types de fichiers d'images autorisés sont limités aux formats JPEG, PNG et GIF.

Les images téléchargées sont enregistrées dans un dossier nommé «catégories-images».

Actuellement ... ces fichiers d'image sont enregistrés dans ce dossier sous le nom qu'ils avaient lorsqu'ils ont été téléchargés.

Exemple: Si un utilisateur télécharge une image JPEG nommée 'blueimage.jpg', le fichier est actuellement enregistré sur l'URL 'mywebsite.com/categories/category-images/blueimage.jpg'. Au lieu de cela ... Je voudrais que le fichier image partage le même nom que le fichier .html.

Ainsi, en utilisant l'exemple ci-dessus ... l'image doit avoir un nom de « 1500000000000.jpg » et avoir une adresse url de

« mywebsite.com/categories/category-images/1500000000000.jpg » .


QUESTION:

Y at-il un moyen d'y parvenir semblable à, ou peut-être même incorporant le code utilisé pour nommer le fichier .html?


REMARQUE:

Il me est apparu que je devrais inclure le php pour l'image et la manipulation.

Alors voilà ...

<?php 
    $target_dir = "articles/article-images/"; 
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; 
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
    if(isset($_POST["submit"])) 
    { 
     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
     if($check !== false) 
     { 
      echo "" . $check[""] . ""; $uploadOk = 1; 
     } 
     else 
     { 
      echo " &#xd7; FILE IS NOT AN IMAGE"; $uploadOk = 0; 
     } 
    } 
    if(file_exists($target_file)) 
    { 
     echo " &#xd7; THIS IMAGE ALREADY EXIST ON SERVER"; $uploadOk = 0; 
    } 
    if ($_FILES["fileToUpload"]["size"] > 500000) 
    { 
     echo " &#xd7; FILE IS TOO LARGE"; $uploadOk = 0; 
    } 
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") 
    { 
     echo " &#xd7; ONLY JPG, JPEG, PNG & GIF FILES ARE PERMITTED"; $uploadOk = 0; 
    } 
    if ($uploadOk == 0) 
    { 
     echo " &#xd7; IMAGE WAS NOT UPLOADED"; 
    } 
    else 
    { 
     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) 
     { 
      echo '<img class="fixed-ratio-resize" src="../../articles/article-images/'. basename($_FILES["fileToUpload"]["name"]). '">'; 
     } 
     else 
     { 
      echo " &#xd7; IMAGE WAS NOT UPLOADED"; 
     } 
    } 
?> 

Répondre

0

Vous devriez juste avoir à prendre le nom du fichier html (les millisecondes, où que ce code est) et remplacer le $_FILES["fileToUpload"]["name"]. Je vais référencer cette valeur comme $millisecs avec l'extension $imageFileType:

<?php 
# Presumably this whole thing is based off a post, so just check at the top 
if(!isset($_POST["submit"])) { 
    # Let the user know, this this can not be accessed without a submission 
    die('Nothing submitted.'); 
} 
# Set the extension first since you aren't going to use the name 
$imageFileType = pathinfo($_FILES["fileToUpload"]["name"],PATHINFO_EXTENSION); 
# Set dir 
$target_dir = "articles/article-images/"; 
# Add your milliseconds carried over from your html script. Add extension, 
# this will be the new name 
$target_file = $target_dir.$millisecs.".{$imageFileType}"; 
# Default affermative 
$uploadOk = 1; 
# Get image size 
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
if($check !== false) { 
    # I am not suer what this is...it doesn't look like you should echo 
    # anything at all... 
    echo "".$check[""].""; 
    $uploadOk = 1; 
} 
else { 
    echo " &#xd7; FILE IS NOT AN IMAGE"; 
    $uploadOk = 0; 
} 

if(file_exists($target_file)) { 
    echo " &#xd7; THIS IMAGE ALREADY EXIST ON SERVER"; 
    $uploadOk = 0; 
} 

if ($_FILES["fileToUpload"]["size"] > 500000) { 
    echo " &#xd7; FILE IS TOO LARGE"; 
    $uploadOk = 0; 
} 
# Set allowed file types 
$allowed = array('jpg','jpeg','png','gif'); 
#Check if type is in list 
if(!in_array(strtolower($imageFileType),$allowed)) { 
    echo " &#xd7; ONLY JPG/JPEG, PNG & GIF FILES ARE PERMITTED"; 
    $uploadOk = 0; 
} 

if($uploadOk == 0) { 
    echo " &#xd7; IMAGE WAS NOT UPLOADED"; 
} 
else { 
    # Move the temp file to the new name here 
    if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
     # Write the basename of the new file here 
     echo '<img class="fixed-ratio-resize" src="../../articles/article-images/'. basename($target_file). '">'; 
    } 
    else { 
     echo " &#xd7; IMAGE WAS NOT UPLOADED"; 
    } 
}