苹果手机 $.post()传参数值大参不了,传小的可以,咋办?

zcxverygood123456 2015-09-11 04:19:55
苹果手机 $.post()传参数值大参不了,传小的可以,咋办?

js关键代码:
var img_data = $('#hit').attr('src');//这是图片的Base64字符串
$.post("hd.aspx", {image:img_data}, function (data)
{
if (data != '')
{
alert("图片上传成功");
}
}
--------------------------
img_data 这个字符串数值很大,我用酷派手机测试没问题,用苹果手机测试,传不了这么大的值,意思hd.aspx页面接收不了这个值;我把这个参数值改小点,苹果手机就可以。请问这个怎么才能兼容这个苹果手机呢?
...全文
274 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ajianchina 2015-09-11
  • 打赏
  • 举报
回复
对于这个域的值,你应该以长度切割后放到各个hidden域中,再把原有域清空,服务器端还是用 Request.Form读取各个hidden域的数据,再按准许拼接起来才行。不可以像你这样全部放在一个域里头的,你要认真测试。
ajianchina 2015-09-11
  • 打赏
  • 举报
回复
即便你这样解决了,我给你一个测试,你马上bug就出来,那就是继续放大文件,用户可不管这些。
  • 打赏
  • 举报
回复
从这里看,img_data 的值在不同浏览器上的默认值是不同的。知道它就应该就可以了。因为base64中不会有:逗号,那么按照逗号 split 字符串并且取最后一个部分就行了。 这不应该在客户端考虑。应该是你的服务器端考虑这个。
  • 打赏
  • 举报
回复
嗯。 看起来你还是没有在第一时间自己动手调试,就发贴了。
zcxverygood123456 2015-09-11
  • 打赏
  • 举报
回复
不过也挺奇怪的,安卓系统手机一直没问题,换成苹果手机就要求严格了,非得对应,即当图片转码为data:image/jpeg;base64,开头的,去掉这开头的正规表达式里面必须有jpeg
zcxverygood123456 2015-09-11
  • 打赏
  • 举报
回复
解决了,不是传参数大的问题 是这里的问题: data:image/jpeg;base64, 有时候图片上传上去是 data:image/jpg;base64, 有时候是 data:image/png;base64, ---------------------------------------- post参数不需要传这句开头的需去掉, 开始我写成img_data.replace(/^data:image\/(png|jpg|gif|bmp);base64,/, "") 这种正规表达式 后来我改成img_data.replace(/^data:image\/(png|jpg|gif|bmp|jpeg);base64,/, "") //多加了一个jpeg 这样我上传的图片转码巧好是data:image/jpeg;base64, 就可以了,就这小地方花了我2天时间。
zcxverygood123456 2015-09-11
  • 打赏
  • 举报
回复
data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgI等等后面还有很多(这里就不粘贴过来了),这是图片的编码, 我用记事本保存,只有100K
  • 打赏
  • 举报
回复
看看你的 img_data 到底有多大?是否接近3.9M。

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧