显示没有页面刷新的docx

时间:2016-07-01 11:18:53

标签: php google-docs

我很想知道是否可以在div内显示docx文件(在服务器上可用)而不刷新该页面(使用google doc viewer 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>显示一个doc文件(不刷新)

所以我尝试了:

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

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

但显然它不起作用。

那我怎么能这样做呢?

1 个答案:

答案 0 :(得分:2)

通常你会这样做:

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(虽然它们可能不会)。