Php 上传文件夹
我使用Uploadify上传文件,并使用Codeigniter框架 这是我的上传代码:Php 上传文件夹,php,javascript,codeigniter,upload,uploadify,Php,Javascript,Codeigniter,Upload,Uploadify,我使用Uploadify上传文件,并使用Codeigniter框架 这是我的上传代码: $("#change_profile_icon").uploadify({ 'uploader' : '/project/style/scripts/crop/uploadify/uploadify.swf', 'script' : 'http://localhost/project/pages/pr
$("#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');
}
});
问题:
$targetPath = 'uploads/' .$_REQUEST['folder']. '/';
$targetFile = $targetPath.$_FILES['Filedata']['name'];
if (!file_exists($targetPath))
{
mkdir(str_replace('//','/',$targetPath), 0755, true);
}
检查上面PHP部分的代码。我认为$_REQUEST['folder']将给出上传脚本上指定的文件夹名称。folder的值为
但这给了我们一些不同的东西
我上传了一个文件,这个脚本将它上传到
C:\wamp\www\project\uploads\project\home\editpage\honda\honda
在wamp服务器上[我在本地主机中]
但是它是怎么来的??应该是
C:\wamp\www\project\uploads\honda
检查下面的
$targetPath = 'uploads/' .$_REQUEST['folder']. '/';
$targetFile = $targetPath.$_FILES['Filedata']['name'];
targetPath现在应该是uploads/honda/
现在应该上传targetFile/honda/fileName.ext
我不知道我做错了什么,错在哪里
请帮帮我
多谢各位
编辑:当前页面的URL结构:http://localhost/Project/home/editpage/honda/
其中home是控制器,editpage是函数,honda是参数。[Codeigniter framework]
我解决了这个问题,这是uploadify中的一个bug:uploadify folder变量不是直接的,所以我们应该在它之前添加一个斜杠 所以它将是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,这是我能从您的基本脚本到我的脚本中看到的唯一内容。只需在设置中提供您要上载的文件夹即可
<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>
在上面的设置中,您遗漏了文件夹选项。我解决了这个问题,这是uploadify中的一个错误:uploadify folder变量不是直接的,因此我们应该在它之前添加一个斜杠
所以它将是var folder=/+FolderName;问题是,如果只使用文件夹名称,则无法返回服务器上的数据。onSelect::函数{var Folder=$'页面列表选项:selected'。text;//返回正确的数据$'change\u profile\u icon'。uploadifySettings'Folder',Folder;}OnSelect事件是指当您尝试从本地文件夹中选择图像,但当您尝试上载到服务器时,其结果不同。是的,您是对的,但您在哪里提到了要上载的文件夹名称?您只是提到了它,但您在何处作为Honda提供了它,您需要将其指定为“文件夹”:“/Honda”,我解决了它,这是一个错误。实际需要在文件夹之前放置\什么??我们正在处理后端脚本上的文件夹。因此uploadify负责以直接方式发送此信息:如果没有斜杠,它会将错误信息发送到服务器,如果不可能,它们可能会抛出一些错误。请澄清您的第一个块?移动上传的文件对我很有帮助。。。。。
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['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>