如何使用codeigniter和vue js上传多个文件
How to upload multiple files using codeigniter and vue js
我认为 codeigniter $this->upload->do_upload('file') 一次上传我所有的文件。
我正在尝试上传多个文件,所有文件都在上传,但我的所有文件都以同一个名称重命名。
示例:我上传的文件名 1.png、2.png、3.png、4.png 上传后所有文件都重命名为 1.png .
<input type="file" ref="file" class="form-control validator" autocomplete="off" :class="{'is-invalid': formValidate.file}" name="files[]" id="files" multiple>
这是我的 vue js 代码:
let formData = new FormData();
formData.append('csrf_token', csrf);
this.isUploading = true;
for( var i = 0; i < this.$refs.file.files.length; i++ ){
let file = this.$refs.file.files[i];
formData.append('files[]', file);
}
axios.post(base_url + 'Main/Process/FilesStorage/addFiles', formData,
{
headers: {
'Content-Type': 'multipart/form-data'
},
onUploadProgress: function(progressEvent) {
this.uploadPercentage = Math.round((progressEvent.loaded * 100) / progressEvent.total);
}.bind(this)
}).then(function(){
}).catch(function(){
})
我的 codeigniter 代码:
public function addFiles(){
if($this->session->userdata('user_id') === NULL) {
redirect(base_url().'Auth/Logout');
}
$data = [];
$count = count($_FILES['files']['name']);
$count;
for($i=0;$i<$count;$i++){
if(!empty($_FILES['files']['name'][$i])){
$_FILES['file']['name'] = $_FILES['files']['name'][$i];
$_FILES['file']['type'] = $_FILES['files']['type'][$i];
$_FILES['file']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
$_FILES['file']['error'] = $_FILES['files']['error'][$i];
$_FILES['file']['size'] = $_FILES['files']['size'][$i];
$config['upload_path'] = PROOT.'storage/';
$config['allowed_types'] = '*';
$config['max_size'] = '15000';
$config['file_name'] = $_FILES['files']['name'][$i];
$this->load->library('upload', $config);
if($this->upload->do_upload('file')){
$uploadData = $this->upload->data();
$filename = $uploadData['file_name'];
$data['totalFiles'][] = $filename;
}else{
echo $this->upload->display_errors();
}
}
}
}
只需删除 $config['file_name'] = $_FILES['files']['name'][$i];它会解决你的问题。
我认为 codeigniter $this->upload->do_upload('file') 一次上传我所有的文件。 我正在尝试上传多个文件,所有文件都在上传,但我的所有文件都以同一个名称重命名。
示例:我上传的文件名 1.png、2.png、3.png、4.png 上传后所有文件都重命名为 1.png .
<input type="file" ref="file" class="form-control validator" autocomplete="off" :class="{'is-invalid': formValidate.file}" name="files[]" id="files" multiple>
这是我的 vue js 代码:
let formData = new FormData();
formData.append('csrf_token', csrf);
this.isUploading = true;
for( var i = 0; i < this.$refs.file.files.length; i++ ){
let file = this.$refs.file.files[i];
formData.append('files[]', file);
}
axios.post(base_url + 'Main/Process/FilesStorage/addFiles', formData,
{
headers: {
'Content-Type': 'multipart/form-data'
},
onUploadProgress: function(progressEvent) {
this.uploadPercentage = Math.round((progressEvent.loaded * 100) / progressEvent.total);
}.bind(this)
}).then(function(){
}).catch(function(){
})
我的 codeigniter 代码:
public function addFiles(){
if($this->session->userdata('user_id') === NULL) {
redirect(base_url().'Auth/Logout');
}
$data = [];
$count = count($_FILES['files']['name']);
$count;
for($i=0;$i<$count;$i++){
if(!empty($_FILES['files']['name'][$i])){
$_FILES['file']['name'] = $_FILES['files']['name'][$i];
$_FILES['file']['type'] = $_FILES['files']['type'][$i];
$_FILES['file']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
$_FILES['file']['error'] = $_FILES['files']['error'][$i];
$_FILES['file']['size'] = $_FILES['files']['size'][$i];
$config['upload_path'] = PROOT.'storage/';
$config['allowed_types'] = '*';
$config['max_size'] = '15000';
$config['file_name'] = $_FILES['files']['name'][$i];
$this->load->library('upload', $config);
if($this->upload->do_upload('file')){
$uploadData = $this->upload->data();
$filename = $uploadData['file_name'];
$data['totalFiles'][] = $filename;
}else{
echo $this->upload->display_errors();
}
}
}
}
只需删除 $config['file_name'] = $_FILES['files']['name'][$i];它会解决你的问题。