2017-10-17 50 views
0

我無法在名稱中附加帶空格的文件,但是當沒有空間 已成功連接時,我正在使用codeigniter進行此操作, 將文件上傳到服務器,然後再附加它,我使用幫助路徑獲取路由到我的文件。 Sendmail的功能的用名稱中的空格附加文件

function upload_file() { 

    //$this->load->helper('path'); 
    //$path = set_realpath('./uploads/'); 

    //upload file 

    $config['upload_path'] = './uploads/'; 
    $config['allowed_types'] = '*'; 
    $config['max_filename'] = '255'; 
    $config['encrypt_name'] = FALSE; 
    $config['max_size'] = '50000'; 
    $config['overwrite'] = TRUE; 

    $this->load->library('upload', $config); 

    if (isset($_FILES['file']['name'])) { 
     if (0 < $_FILES['file']['error']) { 
      echo 'Error durante la carga' . $_FILES['file']['error']; 
     } else { 
      if (file_exists('./uploads/' . $_FILES['file']['name'])) { 
       echo 'Nombre de archivo ya existe : uploads/' . $_FILES['file']['name']; 
      } else { 
       $this->load->library('upload', $config); 
       if (!$this->upload->do_upload('file')) { 
        echo $this->upload->display_errors(); 
       } else { 
        echo 'Archivo cargado! : ./uploads/' . $_FILES['file']['name']; 
       } 
      } 
     } 
    } else { 
     echo 'Porfavor selecciona un archivo'; 
    } 
} 

部分:視圖的

$archivo = $_FILES['file']['name']; 
$path = set_realpath('./uploads/'); 
$adjunto = $path.$archivo; 
$this->email->attach($adjunto); 

部分和JS

<input type="file" id="file" name="file" /> 

$(document).ready(function (e) { 
$('#file').on('change', function() { 
    var file_data = $('#file').prop('files')[0]; 
    var form_data = new FormData(); 
    form_data.append('file', file_data); 
    $.ajax({ 
    url: 'http://mail.mayordomus.cl/Cpersona/upload_file', 
    dataType: 'text', 
    cache: false, 
    contentType: false, 
    processData: false, 
    data: form_data, 
    type: 'post', 
    success: function (response) { 
     $('#msg').html(response); 
    }, 
    error: function (response) { 
     $('#msg').html(response); 
    } 
    }); 
}); 

});

+0

有什麼要求?您是否嘗試在客戶端或服務器上調整文件名? – guest271314

+0

你嘗試過'utf8_encode' – elddenmedio

+0

嘗試使用%20作爲轉義字符。 –

回答

0

您可以從文件的名稱在客戶端使用刪除空格字符File構造

let files = [new File([1], "file name.txt"), new File([2], "file name1.txt")]; 
 

 
let fd = new FormData(); 
 

 
for (let i = 0; i < files.length; i++) { 
 
    console.log(`Original file name: ${files[i].name}`); 
 
    let filename = files[i].name.replace(/\s/g, "-"); 
 
    let file = new File([files[i].slice()], filename); 
 
    fd.append("files-" + i, file); 
 
} 
 

 
for (let [, prop] of fd) { 
 
    console.log(`FormData file name:${prop.name}`); 
 
}