Hy, я смотрел на uploadify.php и ничего не понял.
У меня есть такая форма:
<form id="formid" name="upload_pic" action="upload.php"> <select name="product_id"> <option value="1">Apples</option> <option value="2">Oranges</option> ... etc </select> <input id="file_upload" name="file_upload" /> </form>
и мои настройки загрузки:
<script type="text/javascript"> $(document).ready(function() { $('#file_upload').uploadify({ 'uploader' : 'uploadify/uploadify.swf', 'script' : 'uploadify/uploadify.php', 'cancelImg' : 'uploadify/cancel.png', 'folder' : '../images/level3/tabv_all/tab_header/', 'auto' : false, 'multi' : true, 'fileExt' : '*.jpg', 'fileDesc' : 'ONLY JPG (.JPG)', 'removeCompleted' : false }); }); </script>
Что я хочу сделать, так это то, что если пользователь выбирает Apples
есть id=1
и browse for a file like Tasty_apples.jpg
-> загруженный файл, который будет переименовываться в product@1@Tasty_apples.jpg
а затем вставляться в mysql как это?
Главный вопрос заключается в том, как добавить дополнительный product@id@
в файл на основе значения <select><option> value
?
большое спасибо
Файл uploadify.php:
if (!empty($_FILES)) { $tempFile = $_FILES['Filedata']['tmp_name']; $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; $targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; move_uploaded_file($tempFile,$targetFile); echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile); }
Вы можете отправить дополнительные данные на ваш внутренний скрипт с помощью опции scriptData:
http://www.uploadify.com/documentation/options/scriptdata/
пример
var selectedID = $("select[name=product_id]").val() 'scriptData' : {'pid': selectedID} // uplodify.php $targetFile = str_replace('//','/',$targetPath) . 'product@' . $_POST['pid'] . '@' . $_FILES['Filedata']['name'];
Я думаю, я решил это … попробуйте это в файле upload.php
if (!empty($_FILES)) { $tempFile = $_FILES['Filedata']['tmp_name']; $newName = $_FILES['Filedata']['name']; $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_GET['folder']; if(file_exists($targetPath."/".$newName)) { //echo "test";exit; $part=explode("." , $newName); $name1=$part[0]; $ext=$part[1]; $newName=$name1."_".rand().".".$ext; } $Path = $targetPath . '/'; $targetFile = str_replace('//','/',$Path) . $newName; move_uploaded_file($tempFile,$targetFile);
}
было бы хорошо, если бы вы могли предоставить ваш фактический файл «uploadify.php», чтобы помочь с фактическим PHP. Но в качестве примера того, как вы собираетесь менять имя, было бы чем-то вроде этого:
$tmp_name = @$_FILES['Filedata']['tmp_name']; $name = @$_FILES['Filedata']['name']; $filesize = @$_FILES['Filedata']['size']; $extension = strtolower(pathinfo($name,PATHINFO_EXTENSION)); $newname = 'apples&'.$name . "." . $extension ;
Это просто пример, если бы у меня был ваш код, я мог бы указать его лучше; но надеюсь, что это понятно!
//your categories array, example $cats = array(1=>'apples',2=>'oranges'); if (!empty($_FILES)) { $tempFile = $_FILES['Filedata']['tmp_name']; $targetPath = $_SERVER['DOCUMENT_ROOT'] .'/'. trim($_REQUEST['folder'], '/') . '/'; $name = pathinfo($_FILES['Filedata']['name'], PATHINFO_FILENAME); $extension = strtolower(pathinfo($_FILES['Filedata']['name'], PATHINFO_EXTENSION)); $newname = (isset($cats[$_REQUEST["product_id"]]) ? $cats[$_REQUEST["product_id"]] : 'category_not_exist' ).'@'. (int)$_REQUEST["product_id"].'@'. $name '.' . $extension; $targetFile = str_replace('//','/',$targetPath) . $newname; move_uploaded_file($tempFile, $targetFile); echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile); }