Php Codeigniter使用HTML5进行多文件上传,可以使用Uploadify等工具完成吗?
是否可以只使用HTML5和PHP进行多文件上传?我希望我可以选择多个文件,将它们存储在一个循环中,然后遍历所有文件并将它们上传到服务器 但是Codeigniter只上传我选择的第一个文件Php Codeigniter使用HTML5进行多文件上传,可以使用Uploadify等工具完成吗?,php,codeigniter,uploadify,codeigniter-2,Php,Codeigniter,Uploadify,Codeigniter 2,是否可以只使用HTML5和PHP进行多文件上传?我希望我可以选择多个文件,将它们存储在一个循环中,然后遍历所有文件并将它们上传到服务器 但是Codeigniter只上传我选择的第一个文件 foreach ($_FILES as $key => $value) { $this->upload->do_upload($key['name']) } 我有额外的逻辑来处理诸如上传路径和文件名之类的东西,但是代码很好,但是这个循环似乎只适用于第一个select文件,其他什么
foreach ($_FILES as $key => $value)
{
$this->upload->do_upload($key['name'])
}
我有额外的逻辑来处理诸如上传路径和文件名之类的东西,但是代码很好,但是这个循环似乎只适用于第一个select文件,其他什么都不适用
如果不能使用HTML5和php,我将只使用Uploadify,或者有没有办法修改Upload类以支持多文件上传
这或多或少是我的方法
public function uploadScreens($id) {
$this->load->library('upload');
$config['allowed_types'] = '*';
$config['max_size'] = '45000';
$config['max_width'] = '20000';
$config['max_height'] = '15000';
foreach ($_FILES as $key => $value)
{
if (!empty($key['name']))
{
$this->db->set('gameid', $id);
$this->db->insert('gamescreens');
$screenid = $this->db->insert_id();
$this->createDirectory($screenid);
$filename = $this->randomFilename();
$config['file_name'] = "$filename";
$config['upload_path'] = APPPATH . "../content/gamescreens/" . $screenid . '/';
$this->upload->initialize($config);
if ($this->upload->do_upload($key['name']))
{
$data = $this->upload->data();
$sourceurl = $data["full_path"];
$this->db->simple_query("update gamescreens set source = '$sourceurl' Where id=$screenid");
}
else
{
//catch eerrors
}
}
}
}这是关于CodeIgniter的常见问题。要在CI中上载多个文件,需要调用
$this->upload->initialize($config)代码>在循环中。这是有关CodeIgniter的常见问题。要在CI中上载多个文件,需要调用$this->upload->initialize($config)代码>在循环中。据我所知,在使用uploadify时,您不必使用CI处理多个文件。因为uploadify将逐个上载文件(uploadify队列),每个文件调用一次控制器操作
我在上载控制器中使用此操作上载10个图像文件
/**
* Upload Action.
*/
public function upload()
{
$targetFolder = '/uploads'; // Relative to the root
if (!empty($_FILES)) {
// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetName = uniqid() . '.' . $fileParts['extension'];
$targetFile = rtrim($targetPath,'/') . '/' . $targetName;
if (in_array($fileParts['extension'],$fileTypes)) {
move_uploaded_file($tempFile, $targetFile);
echo $targetName;
} else {
echo 'Invalid file type.';
}
}
}
这是我上传的客户端配置
// create file uploader
$('#file_upload').uploadify({
'swf' : '/swf/uploadify.swf',
'uploader' : YOUR_CONTROLLER + '/upload',
'uploadLimit' : 10,
'onUploadSuccess' : function(file, data, response) {
// do stuff where a file is uploaded
},
'onQueueComplete' : function(data) {
// do stuff when queue done
}
});
希望有帮助。据我所知,在使用uploadify时,您不必使用CI处理多个文件。因为uploadify将逐个上载文件(uploadify队列),每个文件调用一次控制器操作
我在上载控制器中使用此操作上载10个图像文件
/**
* Upload Action.
*/
public function upload()
{
$targetFolder = '/uploads'; // Relative to the root
if (!empty($_FILES)) {
// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetName = uniqid() . '.' . $fileParts['extension'];
$targetFile = rtrim($targetPath,'/') . '/' . $targetName;
if (in_array($fileParts['extension'],$fileTypes)) {
move_uploaded_file($tempFile, $targetFile);
echo $targetName;
} else {
echo 'Invalid file type.';
}
}
}
这是我上传的客户端配置
// create file uploader
$('#file_upload').uploadify({
'swf' : '/swf/uploadify.swf',
'uploader' : YOUR_CONTROLLER + '/upload',
'uploadLimit' : 10,
'onUploadSuccess' : function(file, data, response) {
// do stuff where a file is uploaded
},
'onQueueComplete' : function(data) {
// do stuff when queue done
}
});
希望有帮助。我不使用uplodify上传多个文件
但是我用
和编辑litlle关于多上传库
还有一些问题
它可以加载多个文件,但我不知道“上传文件数据”有什么问题,它只是显示“从上次上传的文件加载数据文件”
我希望这将对您有所帮助,如果您可以解决此问题,请让我知道我不使用uplodify上载多个文件
但是我用
和编辑litlle关于多上传库
还有一些问题
它可以加载多个文件,但我不知道“上传文件数据”有什么问题,它只是显示“从上次上传的文件加载数据文件”
我希望这将对您有所帮助,如果您可以解决此问题,请让我知道基于您的代码示例,我看到以下问题:
foreach ($_FILES as $key => $value)
{
$this->upload->do_upload($key['name'])
}
我认为应该是$value['name']
,不是真的吗?根据您的代码示例,我发现以下问题:
foreach ($_FILES as $key => $value)
{
$this->upload->do_upload($key['name'])
}
我相信这应该是$value['name']
,不是真的吗?我以前有过它,但它不会进行多文件上传。我已经用我的方法更新了我的代码。我不这么认为,我只是选择了多个文件。并且在视图中有一个输入标记。我以前在循环中有它,但它不会进行多文件上传。我已经用我的方法更新了我的代码。我不这么认为,我只是选择了多个文件。并且在视图中有一个输入标记。