【问题标题】:How to upload an iWork Pages 5.2 file.如何上传 iWork Pages 5.2 文件。
【发布时间】:2014-07-10 15:08:56
【问题描述】:

Apple 改变了管理 iWork 文件的方式。这些文件现在是一个包,其内容很像他们的应用程序。我需要创建一个可以接收多个文件的上传表单。主要是图像,但也有一些页面和数字。删除的文件最多可达 15 个,并将使用 PHP 在服务器端进行排序。那已经建好了。

我的问题是。

如何获取要上传的页面文件?到目前为止,我已经尝试了很多预先构建的解决方案。

我也一直在从头开始构建。 “dataTransfer”不喜欢它,它说它是一个目录。 FileReader 看到它但是当我尝试执行以下操作时

for  (var i = 0; i < items.length; ++i) {
            var entry = items[i].type;

            if (entry == "image/png" || entry.type == "image/jpg" || entry.type == "image/jpeg" ) {
                formData.append("file" + i , items[i]);

            } else {

                var fileReader = new FileReader(); 
                var binary = fileReader.readAsBinaryString(items[i]);
                var blob = new Blob([binary], {type: blob});
                formData.append("file" + i , blob);

它返回未定义并弹出以下错误"failed to load resource blob:http://localhost/&lt;RANDOM BLOB STRING HERE&gt;"

当我解码 blob 服务器端时,不出所料,我得到一个大小为 0Kb 的文件,因此它永远不会出现。

我真的只想将所有文件放入服务器上的文件夹中。我什至不介意是否必须尽可能低效地为每个文件发送服务器请求。

我也尝试过 base64 编码,我再次得到类似的结果。 我也尝试过 XHR.response “blob”方法。在每种情况下,我都没有得到我的文件,或者我得到了一个损坏的版本。

解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: javascript php jquery html iwork


    【解决方案1】:

    .Pages “文件”是一个包含文件的文件夹。 OSX 会将它们显示为单个文件;其他系统可能会将它们视为文件夹。无论哪种方式,其他系统可能无论如何都无法打开它们,

    几年前我在尝试将它们加载到版本控制系统时遇到了这个问题。我发现的最佳解决方法是压缩文件,然后对其进行版本控制。不是很好,但确实有效。

    老实说,最好的解决方案是避免使用 .Pages。它并不是一种真正被广泛认可的格式,因此用户可能无论如何都无法打开它。页面可以转换为更易于识别的 Word 或 RTF 格式。

    附带说明,您可能需要非常小心地处理此类文件 (blob)。我没有看到任何阻止某人上传恶意 PHP 脚本或其他有害文件的东西...

    【讨论】:

    • 同意这是一种痛苦,但我受其约束。并且在上传之前向用户工作流程添加一个压缩步骤也不是一种选择。一定有办法得到这个文件服务器端。
    • @GlennHolland 如果这是一个内部工具(并且安全性不是一个大问题),那么也许上传整个目录(有一些 Javascript 工具)并将其压缩到服务器上?跨度>
    猜你喜欢
    • 2010-09-06
    • 2016-07-24
    • 1970-01-01
    • 2015-10-18
    • 2016-06-09
    • 2018-03-24
    • 2011-07-02
    • 2016-07-11
    • 2017-04-24
    相关资源
    最近更新 更多