使用Javascript调整图片大小后,如何通过PHP使用$_POST上传?

4
基本上我正在尝试编写一个网页,用户可以通过iPhone/Andoid和桌面上传图片。这些图片应该保存为缩略图在./userupload中,并将链接存储在MySQL DB中。
我用简单的HTML表单上传和一个PHP脚本实现了它,剪切应该是缩略图的部分,保存新图片并将链接写入数据库。听起来很容易,但棘手的是,iPhone图片现在非常大,通过3G上传6MB的图片需要很长时间。因此,我寻找了一种可能性,在客户端使用Javascript进行调整大小。通过stackoverflow,我发现了这个非常有帮助的小脚本,现在我用它来调整大小。
不幸的是,我的Javascript和HTML5技能不是很发达,我不知道如何传递已调整大小的图像(现在通过<img>标记显示)与<form>的其他输入一起到我的后端php脚本,以保存图像并将链接写入数据库。你有什么想法吗?
预先感谢您。

小心,如果用户上传了你期望为图像数据的内容但实际上不是,这似乎很容易被利用。 - PRNDL Development Studios
1
有道理。我在服务器端进行了检查,但不幸的是没有在客户端进行。我需要寻找一个强大的验证函数 :) 谢谢 - Kurt
1个回答

0

好的,既然您在调整大小的<img>标签的src属性中有一个base64编码的图像,您可以将该值放入隐藏输入框中并上传bas64字符串(而不是真实图像)。然后您可以在PHP脚本中解码图像并以所需的方式保存它。


嗨!非常感谢!在尝试重新编写一些JS之后,我现在能够将base64放入隐藏字段中。但是,如果我尝试使用base64_decode($hiddenfield)解码base54,则会得到一段非常奇怪的字符。我猜解码方式有问题,你有任何正确解码的想法吗? - Kurt
由于图像是二进制数据,如果您将该数据视为文本,则可以预期会出现“奇怪的外观”字符... - CBroe
@Kurt,你解码的不是文本,而是图像数据。如果你想将它保存到文件中,只需将解码后的数据放入文件即可。 - ulentini
谢谢。只是为了明确事情:我创建一个新文件 - 比如说picture.jpg - 然后把base64解码后的文本放进去?还是我应该怎么做? - Kurt
只要图片是jpeg格式,就可以。 - PRNDL Development Studios
只是为了让其他人清楚:加密文件附带有“data:image/jpeg;base64,”,因此需要修剪才能得到有效的jpeg文件。 - Kurt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接