在没有页面刷新的情况下显示 docx

Showing docx without page refresh

我很想知道是否可以在 div 中显示 docx 文件(在服务器上可用)而不刷新该页面(使用 google 文档查看器 API 或任何其他可能的方式)。

让我明确我的要求:-

HTML+JQUERY代码:

  <div class="browse-flie col-md-7">
      <div class="alert alert-danger" style = "display:none;"></div>
    <input type="file" id="uploaddocfile">
    <button name="upload" value="Upload" class="btn EditBtn uplaod_file">Upload</button>
  </div>
  <div id = "myid" style = "height:500px;width:600px;"></div>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
        $('.uplaod_file').on('click', function() {
          var file_data = $('#uploaddocfile').prop('files')[0];
          var ext = file_data.name.split('.').pop();
          if(ext == 'docx'){
            var form_data = new FormData();     
            form_data.append('file', file_data);                  
            $.ajax({
                    url: 'upload.php', // point to server-side PHP script 
                    dataType: 'text',  // what to expect back from the PHP script, if anything
                    cache: false,
                    contentType: false,
                    processData: false,
                    data: form_data,                         
                    type: 'post',
                    success: function(php_script_response){
                      var response = $.parseJSON(php_script_response);
                      if(response.status == 'error'){
                         $('.alert-danger').css({'display':'block'});
                         $('.alert-danger').html('file upload failed please try again');
                      }
                      if(response.status == 'success'){
                         $('#myid').html("http://docs.google.com/gview?url=http://loalhost:8888/Grade/uploads/IEP Form-1.docx&embedded=true");
                      }
                    }
             });
          }else{
            $('.alert-danger').css({'display':'block'});
            $('.alert-danger').html('file extension must be docx'); return false;
          }
        });
    </script>

PHP代码:

<?php

// A list of permitted file extensions
$allowed = array('docx');

//echo "<pre/>";print_r($_FILES); die;

if(isset($_FILES['file']) && $_FILES['file']['error'] == 0){

    $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);

    if(!in_array(strtolower($extension), $allowed)){
        echo '{"status":"error"}';
        exit;
    }

    if(move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name'])){
        echo '{"status":"success"}';
        exit;
    }
}

echo '{"status":"error"}';
exit;

现在:

我有通过 jqueryphp 的简单文件上传代码(工作得很好)。

现在我想要的是,在上传文件成功作为响应后,我想使用 API 向我的 <div id = "myid" style = "height:500px;width:600px;"></div> 显示一个文档文件(不刷新)

所以我试过了:

$('#myid').html("http://docs.google.com/gview?url=http://loalhost:8888/Grade/uploads/IEP Form-1.docx&embedded=true");

(link 出于安全原因更改,但 docx 在服务器上可用,我可以直接打开它)

但是显然不行。

那我该怎么做呢?

通常你会这样做:

if(response.status == 'success'){
     $('#myid').load("http://docs.google.com/gview?url=http://loalhost:8888/Grade/uploads/IEP Form-1.docx&embedded=true");
}

而不是 .html(做其他事情)。

但是它不太可能工作,因为您正在访问的文档不是由 GoogleDocs 管理的文档(可能存在跨源问题),因此请确保您允许来自 Google待制作。

你可以试试

if(response.status == 'success'){
    $('#myid').html("<iframe src=\"http://docs.google.com/gview?url=http://loalhost:8888/Grade/uploads/IEP Form-1.docx&embedded=true\"></iframe>");
}

万一 Google 允许在 iframe 中嵌入 gview(尽管它们可能不允许)。