我无法解码从JAVASCRIPt传递给PHP的文件

时间:2014-03-21 07:35:09

标签: javascript php ajax

我正在编码并将文件(word文档)传递给php。如何读取并写入文件?

我有提交按钮。提交时,我正在传递ajax.Before,之前,我用文件阅读器编码文件。在提交按钮,事件'handleFileSelect'被trtiggered。文件被读取为dataurl并发送到php通过ajax。

我能够以编码的方式获取数据。如果文件是文本,我也可以解码。但是 它无法获取word文件的内容。如果我解码 我该怎么做?

我的代码:

//File Convertion--Function to convert images to base 64 encoded format
function handleFileSelect(objEvent) {
  var strFiles = objEvent.target.files; // FileList object
  strInput = document.getElementById('uploaded_file');
  strFile = strInput.files[0];
  strFiletype=strFile.type;
  strFileSize=strFile.size;alert(strFiletype);
  strFiletype=strFiletype.split("/");

  //Checking wheter the uploaded file is image or not
  if(strFiletype[0]!='image') {
    for (var i = 0, f; f = strFiles[i]; i++) { 
      var reader = new FileReader();
      // Closure to capture the file information.
      reader.onload = (function(theFile) {
              return function(e) {
                    // Render thumbnail.
                    strGlobalImageData=e.target.result;
              };
      })(f);
      reader.readAsDataURL(f);
    } 
  } else {
        alert("NOT A DOC");
  }
 }
//ajax call to send files to php
var app = 'contact.php';
$.ajax({
    url: app,
    async: false,
    type:"POST",
    data : "file="+strGlobalImageData,
    dataType: "jsonp",
    contentType: 'application/x-www-form-urlencoded',
    processData:false,
    jsonp: "jsoncallback",
    success: function(html) {
         alert("Thank you. We will be in touch with you");
    },
    error: function(){
      alert("Thank you. We will be in touch with you");
    }
});

//Php side--contact.php
<?php
$files=base64_decode($_POST['file']);

如果我解码,我将获得word文件的二进制格式

1 个答案:

答案 0 :(得分:0)

问题在于替换字符。我们需要替换befor解码数据。具体代码如下所示: 在Php中,

$文件=修剪($ _ POST [ '文件']);

$ strEncodedData = str_replace('','+',$ files);

$ strFilteredData = explode(',',$ strEncodedData);

$ strDecodedData = base64_decode($ strFilteredData [1]);

$ arrFiles = explode(“,”,$ files);

file_put_contents( “myfile.doc”,$ strDecodedData);

此内容将写入“myfile.doc”文件。

感谢您的朋友所做的一切努力