【问题标题】:Manage files uploaded as a base64 string管理作为 base64 字符串上传的文件
【发布时间】:2013-12-11 22:04:55
【问题描述】:

我目前正在开发一个使用 AngularJS 作为前端的网站,以及一个使用 Laravel 框架 (PHP5) 作为后端的静态 Web 服务;我目前面临一个问题,文件上传。我想上传一个非常简单的文件,其中包含一个文件输入和一些副本到一个服务器文件夹中。

目前,我在 AngularJS 中使用了一个效果很好的指令,并使用 base64 url​​ 发送我的文件;我能够在我的 PHP 后端中获取此字符串,但无法将其转换为文件。例如,我希望能够获取文件名,分机,...并将其复制到服务器..

知道如何将 base64 转换为“文件对象”吗? (该解决方案是否是为 Laravel 和简单的 PHP 设计的并不困扰我)。

【问题讨论】:

    标签: php angularjs


    【解决方案1】:

    只需decode 服务器上的base 64 字符串并写入file 就很容易了。

    如果图像位于图像数据表单中且数据以POST 发送的示例:

    file_put_contents('path/to/images/image.jpg', base_64_decode($_POST['image']));
    

    我对 laravel 并不坚定,但我认为框架内部有比直接访问表单数据 PHP 的 $_POST 数组更好的方法。

    要查找图像的文件类型,请查看finfo_buffer 并了解如何在您的情况下使用here

    【讨论】:

    • 事实上我的字符串是这样开始的 data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4SPrRXhpZgAATU0AKgAAAAgACgEPAAIAAAAGAAAAhg (来自 HTML5 Fileread API),所以我认为我必须做一些额外的工作才能使它工作。我试着删除“数据:image/jpeg;base64" 部分但它不会做任何事情,我可以保存文件但我无法打开它 (Error interpreting JPEG image file (Not a JPEG file: starts with 0x2f 0x39))
    • 它确实有效。您需要从字符串中删除数据:image/jpeg;base64,我在以前的项目中也这样做并写入文件
    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    相关资源
    最近更新 更多