当前I/O问题可能跟提交信息不上来不是一个问题,提交信息不上来,后来发现很可能是 ios11.3以上无法上传提交图文的问题 即 submitAjaxForm 在这个版本下,提交数据存在问题;后面的解决方法是:主要方法就是将图片作为一个base64编码的字符串提交给服务器,然后服务器再将字符串转码为图片保存
1、主页面代码加入 wb.InsertHTML("form1","<input name='picstr' value='' id='picstr' type='hidden' ><br/>")
2、通过sendAjaxjson来提交数据;
修改sendajaxjson里面代码,在内部代码里面加入已生成json信息:
obj.活动码 = document.getElementById("活动码").value;
obj.家长姓名=document.getElementById("家长姓名").value;
obj.手机号码=document.getElementById("手机号码").value;
obj.验证码=document.getElementById("验证码").value;
obj.picstr=document.getElementById("picstr").value;
3、修改weui.me.js的previewFile3函数:
Files[Files.length] = {blobFile:red.FileName,data:base64toBlob(base64Data)};
var pics = document.getElementById("picstr")
if(pics != null) {
pics.value = pics.value + "@" + base64Data
}
做完上述事情,才能在web段提交图片的字符串信息过来;
然后服务器端这样来处理传递过来的图片信息:
Dim picstr() As String = jo("picstr").ToString().Split("@")
Dim tp As String
For i As Integer = 0 To picstr.Length-1
Dim strimg As String = picstr(i)
If strimg <> "" Then
Dim mc = System.Text.RegularExpressions.Regex.Matches(strimg ,"data:image\/.+base64,")
If mc.count >= 1 Then
strimg = strimg.Replace(mc(0).value,"")
End If
Dim bs As Byte() = Convert.FromBase64String(strimg)
Dim stream As System.IO.Stream = New System.IO.MemoryStream(bs)
Dim bmp As System.Drawing.Bitmap = New System.Drawing.Bitmap(stream)
tp = Guid.NewGuid().tostring & Rand.Next(10000,90000)
bmp.Save( "D:\FTP\图片文件\新客活动\" & tp & ".jpg" , System.Drawing.Imaging.ImageFormat.Jpeg)
End If
Next
结束;