以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 移动开发 照片上传咨询 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=106985) |
-- 作者:qwz405 -- 发布时间:2017/9/19 16:35:00 -- 移动开发 照片上传咨询 参照帮助文件:http://www.foxtable.com/mobilehelp/index.htm?page=0251.htm 使用如下代码: Dim e As RequestEventArgs = args(0) Dim wb As New weui wb.AddForm("","form1","dd.htm") If e.PostValues.Count = 0 Then \'如果是首次登陆 With wb.AddInputGroup("form1","ipg1","主題") .AddInput("txt1","","Text") End With With wb.AddInputGroup("form1","ipg2","上传图片") With .AddUploader("up128","照片",True) .AllowDelete = True \'允许删除 .Incremental = True \'允许重复选择文件或连续拍照 .ScaleWidth = 1000 \'自动压缩图片宽度为1000个像素,高度等比例压缩 End With End With With wb.AddButtonGroup("form1","btg1",True) .Add("btn1", "确定", "button").Attribute= **** \'调用js函数上传 End With wb.AddToast("","tst1", "正在上传",1) wb.AddToast("","tst2", "上传成功",0) wb.AddToast("","tst3", "上传失败",0).Icon= "warn" wb.AppendHTML("<script src=\'./lib/tl_notice_2.js\'></script>") \'引入脚本文件 Else Dim dr As DataRow = DataTables("管理公告").AddNew() dr("主題") = e.PostValues("txt1") For Each key As String In e.Files.Keys For Each fl As String In e.Files(key) Dim NewName As String = fl Dim idx As Integer = fl.LastIndexOf(".") Dim cnt As Integer = 1 Do While FileSys.FileExists("d:\\web\\uploadfiles\\" & NewName) \'判断文件夹是否存在同名文件 NewName = fl.Insert(idx,"(" & cnt & ")") \'如果存在同名文件,在原文件名加上序号 cnt = cnt + 1 \'递增序号 Loop e.SaveFile(key,fl,"d:\\web\\uploadfiles\\" & NewName) \'保存接收到的文件 dr.Lines("照片") = dr("照片") & e.Files(key) \'-----> 请教:如果要在照片列记录所有照片名称,代码要怎么写? Next Next dr.Save() e.WriteString("OK") End If e.WriteString(wb.Build) JS函数如下所示: function submitForm(){ show("tst1",2000); var result = submitAjaxForm(\'form1\',\'afterSubmit\'); } function afterSubmit(result){ hide("tst1"); if (result==\'OK\') { show("tst2"); location="aa.htm?v="+Math.random(); } else{ show("tst3",2000); } } 咨询: 1.上面红色咨询的,如何在“照片”列中保存全部上传的照片名称?---后续网页查看照片时,又如何分开来,显示多张照片。 2.用微信浏览器及苹果手机微信端测试,能正常上传1张及多张照片。 3.用安卓手机,上传1张照片正常;上传2张及更多照片时,手机会卡住,等待或者直接退出照片上传,服务器报警:由于线程退出或应用程序请求,已中止 I/O 操作。 [此贴子已经被作者于2017/9/19 16:36:21编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/9/19 19:03:00 -- 1、参考
http://www.foxtable.com/webhelp/scr/2717.htm
2、3、代码应该有问题,下面两个地方重复了,只能用一次e.WriteString
e.WriteString("OK")
Return
End If
e.WriteString(wb.Build)
|
-- 作者:浙江仔 -- 发布时间:2017/9/20 9:29:00 -- 我把每个照片的路径作为一条记录,放在C_SI_Estimate_DTL_FILES表中 显示如下: Dim sdr As DataRow = DataTables("C_SI_Estimate_DTL_FILES").SQLFind("DTL_id = \'" & xdr("DTL_id") & "\' and IS_ACTIVE =\'1\' ") With .AddUploader("up1","照片",True) \'True表示允许上传多个文件 .ScaleWidth= 800 If sdr IsNot Nothing Then For Each dr As DataRow In DataTables("C_SI_Estimate_DTL_FILES").SQLSelect("DTL_id = \'" & xdr("DTL_id") & "\' and is_active=\'1\' ") .AddImage( "./upload/" & dr("FILES_SAVENAME") ) Next End If
End With
保存附件如下:
\'保存附件 For Each key As String In e.Files.Keys If key = "up1" Then For Each fln As String In e.Files(key) Dim s As String=fln s=s.substring(s.LastIndexOf(".")) Dim s2 As String =Guid.NewGuid().ToString().replace("-","") s= s2 & s e.SaveFile(key, fln, ProjectPath & "web\\upload\\" & s) Dim dr2 As DataRow = DataTables("C_SI_Estimate_DTL_FILES").SQLAddNew() dr2("FILES_SAVENAME") = s dr2("FILES_NAME") = fln dr2("DTL_id")=Dtlid dr2("CREATE_TIME")=now.Tostring.replace("-","").replace(" ","").replace(":","") dr2("UPDATE_TIME")=now.Tostring.replace("-","").replace(" ","").replace(":","") dr2("IS_ACTIVE")="1" If openid>"" Then dr2("creator")=fdp("person_id")
Else dr2("creator")="test" End If dr2.save() Next End If Next |
-- 作者:qwz405 -- 发布时间:2017/9/20 9:41:00 -- 老师,您好。 按您的指导,代码增加了“return”,还是微信浏览器/苹果手机微信端,上传图片正常;安卓手机微信端上传就会卡死,然后就跳如 1楼 所示错误。 代码: Dim e As RequestEventArgs = args(0) Dim wb As New weui wb.AddForm("","form1","dd.htm") If e.PostValues.Count = 0 Then \'如果是首次登陆 With wb.AddInputGroup("form1","ipg1","主題") .AddTextArea("txt1",1).Placeholder = "15字以內(必填)" End With With wb.AddInputGroup("form1","ipg2","備註") .AddTextArea("txt2",3).Placeholder = "200字以內(非必填)" End With With wb.AddInputGroup("form1","ipg3","上传图片") With .AddUploader("up128","照片",True) .AllowDelete = True \'允许删除 .Incremental = True \'允许重复选择文件或连续拍照 .ScaleWidth = 1000 \'自动压缩图片宽度为1000个像素,高度等比例压缩 End With End With With wb.AddButtonGroup("form1","btg1",True) .Add("btn1", "确定", "button").Attribute= "o n c lick=\'s u b m itForm()\'" \'调用js函数上传 End With wb.AddToast("","tst1", "正在上传",1) wb.AddToast("","tst2", "上传成功",0) wb.AddToast("","tst3", "上传失败",0).Icon= "warn" wb.AppendHTML("<script src=\'./lib/notic.js\'></script>") \'引入脚本文件 Else Dim dr As DataRow = DataTables("管理公告").AddNew() dr("主題") = e.PostValues("txt1") For Each key As String In e.Files.Keys For Each fl As String In e.Files(key) Dim NewName As String = fl Dim idx As Integer = fl.LastIndexOf(".") Dim cnt As Integer = 1 Do While FileSys.FileExists("d:\\web\\uploadfiles\\" & NewName) \'判断文件夹是否存在同名文件 NewName = fl.Insert(idx,"(" & cnt & ")") \'如果存在同名文件,在原文件名加上序号 cnt = cnt + 1 \'递增序号 Loop e.SaveFile(key,fl,"d:\\web\\uploadfiles\\" & NewName) \'保存接收到的文件 dr.Lines("照片") = e.Files(key) Next Next dr.Save() e.WriteString("OK") Return "" \'已完成上传,此处可以退出. End If e.WriteString(wb.Build) JS代码: //**** 显示上传提示 function submitForm(){ show("tst1",2000); var result = submitAjaxForm(\'form1\',\'afterSubmit\'); } function afterSubmit(result){ hide("tst1"); if (result==\'OK\') { show("tst2"); location="aa.htm?v="+Math.random(); } else{ show("tst3",2000); } } |
-- 作者:有点甜 -- 发布时间:2017/9/20 10:17:00 -- 1、在代码那里加入msgbox,看是否进入执行了代码,看执行到哪里开始出问题,弹出对应的值看有什么不同。
2、你httprequest是否写了多次 e.WriteString ?在函数执行完以后还写了 e.WriteString ? |
-- 作者:qwz405 -- 发布时间:2017/9/20 12:01:00 -- 经测试,是压缩代码的问题。 将压缩比例改为100,就能正常使用,但改回1000后,就是出现上面所示的情况。 问题: 1.压缩比较太小,图片无法清晰查看。 2.苹果、电脑端能正常使用,安卓手机就不行,奇怪。。。苹果手机拍的照片也不小。 希望压缩比能大点,这样查看的图片也能清晰。..是否有办法 ... With wb.AddInputGroup("form1","ipg3","上传图片") With .AddUploader("up128","照片",True) .AllowDelete = True \'允许删除 .Incremental = True \'允许重复选择文件或连续拍照 .ScaleWidth = 100 \'自动压缩图片宽度为100个像素,高度等比例压缩 End With End With ...
[此贴子已经被作者于2017/9/20 12:01:49编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/9/20 12:14:00 -- 不设置缩放呢?
在服务器端,保存之后,再对图片进行处理也行,这样简单很多。 |
-- 作者:qwz405 -- 发布时间:2017/9/20 15:55:00 -- 老师,为了达到没有上传照片,禁止保存,我将JS代码修改如下: 现在不管传不传照片,都会弹错误,问题了出在:V3.length上,它无法判断是否有传照片。 咨询下代码要如何修改?
function submitForm(){ var v1 = document.getElementById("txt1").value; //主題 var v2 = document.getElementById("txt2").value; //備註 var v3 = document.getElementById("up128").files; if (v1 && v1.length <= 15 && v2.length <= 200 && v3.length > 0){ show("tst1",2000); var result = submitAjaxForm(\'form1\',\'afterSubmit\'); } else{
show("toptip1",2500); return false; } } |
-- 作者:有点甜 -- 发布时间:2017/9/20 16:02:00 -- 试试
alert("123"); var v3 = document.getElementById("up128_thumbnails").getElementsByTagName("li").length; alert(v3); |
-- 作者:qwz405 -- 发布时间:2017/9/22 13:34:00 -- 老师,您好。 经测试,发现使用AddImage显示照片,如果照片名:有空格,或者带(),都不能显示。 咨询: 1.是否确实没有办法处理?(我尝试使用 sb.AppendLine("<img src=\'./images/photo/tl_notice/照片\'><br/><br/>"),以上照片可以显示 ) 2.还有哪些图片命名不能显示,我好提示使用者上传时规避。 With wb.AddInputGroup("form1","ipg22","文件上传") \'带图片浏览的文件上传 With .AddUploader("up2","图片",True) \'True表示允许一次上传多个文件 .AddImage("./images/00(1).jpg") .AddImage("./images/00 2.jpg") End With
End With |