2012-08-05 61 views
2

我现在有这个数组,其中包含大量的数据URI。我在代码中设置这个早期是这样的:是否可以使用jQuery或PHP上传数据URI?

dataArray = []; 
dataArray.push({name : file.name, value : this.result}); 

做的几件事情与数据URI后,我要上传到当用户最终按下上传按钮,所以我通过数据URI的PHP文件像这样:

$.each(dataArray, function(index, file) { 

    $.post('upload.php', dataArray[index], function(data) { 

并运行里面的一些功能来显示加载条等

现在在PHP文件(upload.php的),我不知道该怎么做。每个数据URI将单独发布到PHP文件中,但是如何在PHP中处理数据URI?通常我会做$ _POST来获取数据URI本身,但我真的不知道如何去将它推入服务器上的文件夹。我可以将数据URI视为普通文件并使用$ _FILES吗?到目前为止,我还没有取得太大的成功。

+0

最终结果是你希望用户指定URL并让服务器下载它们引用的资源作为本地副本存储在你的服务器上? '$ _FILES'绝对不会进入它。如果你所有的都是URL,那么它们就是字符串,可以像任何其他字符串数据一样处理 - 所以'$ _POST'就是你想要的,然后你可能想要使用类似[cURL](http:///php.net/manual/en/book.curl.php)来处理它们。 – DaveRandom 2012-08-05 22:02:38

回答

3

POST数据将是这样的:

$name = $_POST['name']; 
$value = $_POST['value']; 

之前,你甚至触摸这些变量的值,需要先消毒所有的变量,并确认$value变量实际上是一个有效的图像文件。为此,您需要将数据URI转换为实际图像。

要做到这一点,你需要检查数据-URI的结构:

data:[<MIME-type>][;charset=<encoding>][;base64],<data> 

所以为了解析它,你需要写一个正则表达式来提取数据-URI信息,解码base64编码的图像数据,最后尝试使用MIME类型将其解析为图像文件。如果失败,图像已损坏。如果没有,你可以将它保存到你的服务器上。

听起来可能听起来很复杂,但我怀疑这需要很长时间才能实现。

+0

完美,谢谢。我终于设法让它工作。我只是编码数据并添加了正确的MIME类型! – Johnny 2012-08-05 23:38:31

相关问题