【发布时间】:2015-01-09 16:26:34
【问题描述】:
大家好:我还有另一个挑战:
我正在使用来自 blueimp 的 php 的 Jquery 文件上传器:https://github.com/blueimp/jQuery-File-Upload
我正在修改代码以在我的网络中实现上传器。 我可以正确使用它,但是关于某些添加或模组的文档很差:
我正在尝试修改文件 UploaderHandler.php 以使用用户名(唯一)创建一个文件夹,但我不知道将我的 mkdir() 函数放在哪里...
并且想上传将名称更改为 1.txt、2.pdf、3.doc...等等的文件
有什么帮助吗?
PD:我正在考虑 3 个解决方案:
1) 将我的 mkdir() 函数放在 login.php 中,当用户登录时,它会检查文件夹是否存在并且它是空的......并且每次他重新加载某些 .php 文件时。我猜这不是最好的解决方案。
2) 将 mkdir() 函数从 uploadHandler.php 放入 get_upload_path 中
3) 将我的 rename() 函数放入来自 uploadHandler.php 的 get_unique_filename 中
编辑:我刚刚尝试了 2) 选项:我修改了 UploadHandler.php。
它工作,使用用户名创建文件夹,并将上传的文件放入文件夹中。但在 AJAX 中,我没有收到响应,也没有创建响应行:
上传处理程序.php:
function __construct($options = null, $initialize = true, $error_messages = null){
ob_start();
include('../conexion.php');
include('../session/session.php');
$url_subida = dirname($this->get_server_var('SCRIPT_FILENAME')).'/'.$usuario.'/';
if(!is_dir($url_subida)){
mkdir($url_subida, 0777);
}
else{
error_log($url_subida);
}
$this->options = array(
'script_url' => $this->get_full_url().'/',
'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/'.$usuario.'/',
'upload_url' => $this->get_full_url().'/'.$usuario.'/',
[...]
HTML/php 中的 AJAX 响应:
$(function(){
$('#fileupload').fileupload({
dataType: 'json',
done: function (e, data){
$.each(data.result.files, function (index, file) {
numarch++;
$('<div id="archivo_'+numarch+'" />').appendTo('#files');
if (file.error){
$('<img src="img/x.png" title="Error" alt="Error"/>').appendTo('#archivo_'+numarch);
$('<p class="text-danger"/>').text(file.error).appendTo('#archivo_'+numarch);
}
else{
var newFileDiv = $("<img title='Archivo subido OK' alt='Archivo subido OK'/>
<p>"+file.name+"</p>
<div id='borrarDiv' name='borrarDiv' class='btn btn-danger delete' onclick= borrar_archivo ('archivo_"+numarch+"','"+file.deleteUrl+"','"+file.deleteType+"','"+numarch+"')>
<i class='glyphicon glyphicon-trash'></i>
<span>Borrar</span></div>");
$('#archivo_'+numarch).append(newFileDiv);
}
});
},
progressall: function (e, data){
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .progress-bar').html(progress + '%');
$('#progress .progress-bar').css('width',progress + '%');
}
});
});
你能帮我得到答复吗?
【问题讨论】:
-
1) 是的,不推荐 #2) 是的,但不是全部,仅在上传开始时检查,如果不存在则创建目录 #2a) 如果您使用会话或类似的东西 -使用 true 或 false 存储类似 'upload_dir_exists' 的 var 并仅在上传时检查,这将比检查 dir 是否存在更快 # 3) 确实,或者像 2a) 将上传文件的当前计数存储在 var 中并仅放置扩展名在它上面 - 然后移动/复制给定目录和名称下的文件
标签: php jquery file-upload jquery-file-upload mkdir