Я использую Uploadify для загрузки файлов и использую Codeigniter Framework.
Вот мой код Uploadify:
$("#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
должно быть сейчас uploads/honda/
и targetFile
должно быть сейчас uploads/honda/fileName.ext
Я не знаю, что я делаю неправильно и где это ....
Пожалуйста, помогите мне.
Спасибо.
РЕДАКТИРОВАТЬ : Структура URL текущей страницы: http://localhost/Project/home/editpage/honda/
где home
- контроллер, а editpage
- функция, а honda
- аргумент. [Frameworkignigniter Framework]
SOLVED
Я решил проблему, это ошибка в uploadify: переменная папки uploadify не прямолинейна, поэтому перед этим мы должны добавить slash
.
, поэтому это будет var folder = "/"+ "FolderName";
Проблема в том, что выне могу вернуть данные на сервер, если вы используете только имя папки.