如何以上载形式将文件编码到base64中

时间:2015-12-11 10:16:41

标签: php json ajax codeigniter

我正在制作编辑表格而且我坚持上传文件。我想用

之类的键来输出
new_files[0][format]:pdf
new_files[0][name]:1T5WZ9S_Aleydin.pdf
new_files[0][file]:JVBERi0xLjQNCiWys7S1DQolR2VuZXJhdGVkIGJ5IEV4cGVydFBkZiB2OS4xLjMNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL1BhZ2VNb2RlIC9Vc2VOb25lDQovMizLOkjKt62VsTvdDlztlA93atwNRrIqyhHHyJFvkebGs8mqWJdm
= (Base64)

现在我变得喜欢

name: "1T5WZ9S_Aleydin.pdf"
size: 0
type: "application/pdf"

这是我的文件输入部分

的一部分
        <div class="app-basic-form-file-drop" data-type="Offer Confirmation">
        <label class="orange">Offer Confirmation:</label>
        <div class="app-basic-form-file-drop-area">
                <div class="form-file-drop-header">
                        <div class="app-add-button">Add Files</div>
                </div>
                <div class="form-file-drop-icon" onClick="$(this).parent().siblings('.file-drop-click').click()">
                        <div class="form-file-icon"></div>
                        <div class="clear"></div>
                        <label>Select Files</label>
                </div>
        </div>
        <input type="file" multiple="true" name="file[]" class="file-drop-click" style="display: block;">
    </div>

我使用带有Codeigniter上传库的ajax数据类型Json提交。

我想上传doc和pdf类型的文件。

更新

所以我为此写了函数

    public function write($file, $box = true) 
{
    $filename = $file["filename"];
    $dir = $file["dir"];
    $base64 = $file["file"];
    $format = $file["format"];
    $path = "files/{$dir}/" . $filename; 

    // Write file
    $document_file = fopen($path, "w");
    fwrite($document_file, base64_decode($base64));

    // Close file
    fclose($document_file);

    // Generate HTML
    if($box) 
    {
        $html_filename = str_replace($format, ".html", $filename);
        $c_file = $this->convert_file($path, $html_filename, $dir);

        $file["document_id"] = $c_file["document_id"];
        $file["converted"] = $c_file["converted"];
        if($file["converted"] == 1)
            $file["html_filename"] = $html_filename;

    }
    return $file;
}

所以现在我要问如何在上传中获取文件目录。

2 个答案:

答案 0 :(得分:2)

我可以根据您的需要向您展示一个可以实现的演示...... 的 HTML     
    

<强>的JavaScript

function previewFile() {
  var preview = document.querySelector('img');
  var file    = document.querySelector('input[type=file]').files[0];
  var reader  = new FileReader();

  reader.onloadend = function () {
    preview.src = reader.result;
  }

  if (file) {
    reader.readAsDataURL(file);
  } else {
    preview.src = "";
  }
}

答案 1 :(得分:1)

您可以尝试以这种方式获取信息:

$new_files = array();
foreach ($_FILES['file']['name'] as $key => $name) {
     $new_files[] = array (
         'file' => base64_encode(file_get_contents($_FILES["file"]["tmp_name"][$key])),
         'name' => $name,
         'format' => end((explode(".", $name)))
}