2013-07-23 57 views
3

有没有办法将一个base64图像字符串添加到$_FILES数组(您上传文件时获得的数组)?基本上,我想伪造base64字符串的文件上传。 base64字符串来自电子邮件附件。我不希望使用file_get_contents(),因为我想将图像作为二进制图像保存在数据库中。我不需要上传,但我确实需要它是$_FILES阵列的一部分。

+0

你在哪里有base64字符串?在客户端在JavaScript? – jcsanyi

+0

请提供更多的上下文 - 谁在上传文件? – jcsanyi

+0

base64字符串来自电子邮件附件。所以PHP。 @jcsanyi –

回答

4

上传是一种将文件内容从客户端(通常是网页浏览器)发送到服务器的方式。这听起来像你已经得到了你需要的服务器上的数据(用PHP),所以你不需要上传它。

  1. 您可以使用base64_decode()将其从base64转换为直接文件内容。

  2. 如果你需要它作为你的服务器上的文件,你可以使用像file_put_contents()这样的东西将它保存为一个新的文件。

  3. 如果您尝试使用$_FILE阵列中上传的文件执行其他操作,请提供更多详细信息。不管它是什么,你都不需要真正上传文件。


$_FILES阵列实际上并不包含该文件的内容 - 它包含其中的内容已保存的文件名。

如果你必须使用$_FILES阵列(以便重新使用现有的类,例如),你需要使用file_put_contents()保存一个新的临时文件,然后手动添加一个条目的$_FILES阵列指向该临时文件(就像修改任何其他数组一样)。完成后不要忘记删除临时文件 - 这通常由PHP自动处理,但如果您手动创建文件,则必须手动删除它。

尽管我强烈建议重构或为您的课程提供替代接口。您不应该假装该文件已上传,只是将其保存到数据库中。

+0

就像我说的,我不希望它file_put_contents ...因为我需要它“上传”到数据库,而不是在base64中。所以我去解码,所以它在二进制/图像。我希望它在$ _FILES数组中。 –

+0

'$ _FILES'数组,也没有上传与数据库有任何关系。 '$ _FILES'数组只是一种访问从浏览器发送给您的文件内容的方式。你已经获得了文件的内容,所以你不需要'$ _FILES'数组。 – jcsanyi

+0

我建立了一个php类,它将$ _FILES数组中的文件添加到数据库中,它创建一个哈希,等等。我知道我不需要它,我只是想''_FILES'数组 –

相关问题