Загрузка base64 pdf - PullRequest
       8

Загрузка base64 pdf

0 голосов
/ 17 января 2019

Я делаю файловый менеджер. Теперь я столкнулся с проблемой при попытке загрузить PDF-файлы. Код, который я до сих пор загружал, работает нормально. Когда я конвертирую PDF в base64 строку и открываю ее на вкладке, он показывает правильный файл и работает.

Когда я загружаю файл, он загружается правильно, однако, когда я открываю загруженный файл, он кажется поврежденным.

Часть кода для загрузки файлов, которые у меня есть:

JavaScript:

if(files[0].type.match(/\/pdf$/)){
 var reader = new FileReader();
 reader.readAsDataURL(files[0]);
 reader.onload = function () {
  uploadFile(reader.result, 'pdf', 'pdf', files[0].name);
  console.log(reader.result); //shows correct base64
 };
 reader.onerror = function (error) {
  console.log('Error: ', error);
 };
}


function uploadFile(file, name, type, file_name) {
  var file_name = file_name.split('.')[0];
  var $row = renderFileUploadRow(file_name, name);
  $('body').append($row);
  var fd = new FormData();
  fd.append('file_data', file);
  fd.append('do', 'upload');
  fd.append('type', type);
  fd.append('name', name)
  fd.append('file_name', file_name);
  var xhr = new XMLHttpRequest();
  xhr.open('POST', 'control.php?');
  xhr.onload = function(data) {
    $row.remove();
  };
  xhr.upload.onprogress = function(e) {
    if (e.lengthComputable) {
      $row.find('.progress').css('width', (e.loaded / e.total * 100 | 0) + '%');
    }
  };
  xhr.send(fd);
}

PHP получает вызов ajax:

if ($_POST['do'] == 'upload') {
  $type = $_POST['type'];
    $img = $_POST['file_data'];
    $img = str_replace('data:image/'.$type.';base64,', '', $img);
  echo "$type";
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
  if ($type == 'jpeg') {
    $type = 'jpg';
  }
  define('UPLOAD_DIR', 'data/'.$_POST['name'].'/');
    $upload = UPLOAD_DIR . $_POST['file_name'] . '.'.$type;
  if (file_exists($upload)==1){
    $nummer = '1';
    while(file_exists(UPLOAD_DIR . $_POST['file_name'] .'('. $nummer . ').'.$type)) {
      $nummer++;
    }
    $upload = UPLOAD_DIR . $_POST['file_name'] .'('. $nummer .').'.$type;
  }
    $success = file_put_contents($upload, $data);
  exit;
}

Я ожидал, что загрузка будет корректной, потому что когда я сначала делал изображения и проверял их, файлы были загружены правильно. Теперь он загружается, но файл поврежден.

Что я здесь не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...