我正在编码并将文件(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文件的二进制格式
答案 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”文件。
感谢您的朋友所做的一切努力