Я использую Uploadify для загрузки файлов и использования рамки Codeigniter.
Вот мой код добавления:
$("#change_profile_icon").uploadify({ 'uploader' : '/project/style/scripts/crop/uploadify/uploadify.swf', 'script' : 'http://localhost/project/pages/profile_icon', 'cancelImg' : '/project/style/scripts/crop/uploadify/cancel.png', 'buttonText' :'Upload image', 'width' : '110', 'height' : '30', 'queueID' : 'fileQueue', 'auto' : true, 'scriptData' :{username :"<?php echo $this->session->userdata('username');?>",folder:"honda"}, 'queueSizeLimit' : 1, 'multi' : false, 'fileDesc' : 'jpg', 'fileExt' : '*.jpg;*.png', 'sizeLimit' : '819200',//max size bytes - 800kb 'onComplete' : function(event,queueID,fileObj,response,data) { alert("Completed"); var dataresponse = eval('(' + response + ')'); //$('#uploadifyUploader').remove(); var filenametmp = "http://localhost"+(dataresponse.file).substring(0,(dataresponse.file).lastIndexOf("?")); var current_page = $('#page-list').val(); }, 'onSelect' : function (){ var folder = $('#page-list option:selected').text(); //returns HONDA which is correct $('#change_profile_icon').uploadifySettings('folder',folder); } , 'onError' : function(){ alert('error'); } });
Вот моя часть PHP [значение скрипта в Uploadify]
function profile_icon() { if (!empty($_FILES)) { $tempFile = $_FILES['Filedata']['tmp_name']; $targetPath = $_REQUEST['folder'] . '/'; $targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; // $fileTypes = str_replace('*.','',$_REQUEST['fileext']); // $fileTypes = str_replace(';','|',$fileTypes); // $typesArray = split('\|',$fileTypes); // $fileParts = pathinfo($_FILES['Filedata']['name']); // if (in_array($fileParts['extension'],$typesArray)) { // Uncomment the following line if you want to make the directory if it doesn't exist $targetPath = 'uploads/' .$_REQUEST['folder']. '/'; $targetFile = $targetPath.$_FILES['Filedata']['name']; if (!file_exists($targetPath)) { mkdir(str_replace('//','/',$targetPath), 0755, true); } move_uploaded_file($tempFile,$targetFile); echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile); // } else { // echo 'Invalid file type.'; // } }
Проблема:
$targetPath = 'uploads/' .$_REQUEST['folder']. '/'; $targetFile = $targetPath.$_FILES['Filedata']['name']; if (!file_exists($targetPath)) { mkdir(str_replace('//','/',$targetPath), 0755, true); }
Проверьте приведенные выше коды, взятые из части PHP. Я думаю, что $_REQUEST['folder']
предоставит имя папки, указанное в скрипте Uploadify. Значение folder
– это Honda
Но это дает что-то другое.
Я загрузил файл, и этот скрипт загрузил его в
C:\wamp\www\project\uploads\project\home\editpage\honda\honda
На сервере wamp [я нахожусь в Localhost]
Но как это происходит? должен быть
C:\wamp\www\project\uploads\honda
Проверьте ниже …
$targetPath = 'uploads/' .$_REQUEST['folder']. '/'; $targetFile = $targetPath.$_FILES['Filedata']['name'];
Теперь targetPath
должен быть targetPath
uploads/honda/
и targetFile
должен быть теперь uploads/honda/fileName.ext
Я не знаю, что я делаю неправильно, и где это …
Пожалуйста, помогите мне.
Спасибо .
EDIT : URL-СТРУКТУРА ТЕКУЩЕЙ СТРАНИЦЫ: http://localhost/Project/home/editpage/honda/
Где home
– это контроллер, а editpage
– это функция, а honda
– аргумент. [Codeigniter framework]
SOLVED
Я решил проблему, это ошибка в uploadify: переменная папки uploadify не прямолинейна, поэтому перед этим нужно добавить slash
.
так что это будет var folder = "/"+ "FolderName";
Проблема заключается в том, чтобы вернуть данные на сервер, если вы используете только имя папки.
Я решил проблему, это ошибка в uploadify: переменная папки uploadify не прямолинейна, поэтому перед этим нужно добавить косую черту.
так что это будет var folder = "/" + "FolderName"; Проблема заключается в том, чтобы вернуть данные на сервер, если вы используете только имя папки.
Я думаю, вы получите большую помощь, чтобы поместить свой вывод в файл, 🙂
$myFile = "[full-folder-path]testFile.txt"; $fh = fopen($myFile, 'a') or die("can't open file"); $stringData = $_FILES['Filedata']['name'] ." | ". print_r( $_REQUEST, true ) ."\n"; fwrite($fh, $stringData); fclose($fh);
Но я думаю, если вы измените свою линию $ targetPath на эту
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
Помните, что ваша папка нуждается в чтении / wirte rulls, ее единственное, что я могу видеть, ее worng от вашего базового сценария к моему сценарию.
Просто укажите folder
вы хотите загрузить в настройках, как
<script type="text/javascript"> $(document).ready(function() { $('#file_upload').uploadify({ 'uploader' : '/uploadify/uploadify.swf', 'script' : '/uploadify/uploadify.php', 'cancelImg' : '/uploadify/cancel.png', 'folder' : '/uploads', 'auto' : true }); }); </script>
Как и в приведенных выше настройках, вы пропустили опцию folder
.