Foxtable(狐表)用户栏目专家坐堂 → UPLOADER应用的问题


  共有2573人关注过本帖树形打印复制链接

主题:UPLOADER应用的问题

帅哥哟,离线,有人找我吗?
douglas738888
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
UPLOADER应用的问题  发帖心情 Post By:2020/8/6 14:54:00 [只看该作者]

请教老师,下面的代码,有两个问题,不知问题再哪里,请老师帮忙看看。

1:无法把拍照的图片存放在指定的路径文件夹中,

2:增加行后,表格中的相关文字列有数据,表格中的图片列也没有数据

 

想实现的是:通过手机进行报修并调用手机中的相机拍照上传几张图片到服务器上的某个文件夹中

 

Dim wb As New weui
Select Case e.Path
    Case "addnew.htm","" 
        wb.AddPageTitle("","pageheader","AAA","故障报修")
        If e.PostValues.Count = 0 Then
            wb.AddForm("","form1","addnew.htm")
            With wb.AddInputGroup("form1","ipg1","请您填写相关报修信息, 谢谢!")
                .AddInput("单位名称","单位名称","text").Placeholder = "请输入单位名称"
                .AddInput("报障姓名","姓名","text").Placeholder = "请输入姓名"
                .AddInput("联系电话","联系手机","number").Placeholder = "请输入手机号码"


       

            With wb.AddInputGroup("form1","ipg2","故障描述")
            .AddTextArea("故障描述",6).Placeholder = "请输入200字以内的描述"
            End With


            '--------直接拍照上传
            With wb.AddInputGroup("form1","ipg3","请拍照上传故障图片")
                  With .AddUploader("up1","故障图片",True)
                  .Accept = "image/*"   
                  .AllowDelete = True '允许删除
                  .Incremental = True '允许重复选择文件或连续拍照
                  .Capture = "camera" '只能拍照上传
                  End With
            End With

 

            With wb.AddButtonGroup("form1","btg1",True)
                .Add("btn1", "提交", "submit") '.Attribute= "" '调用js函数上传
            End With
            wb.AddToast("","tst1", "正在上传",1)
            wb.AddToast("","tst2", "上传成功",0)
            wb.AddToast("","tst3", "上传失败",0).Icon= "warn"
            wb.AppendHTML("<script src='./lib/ajaxform.js'></script>") '引入脚本文件
            e.WriteString(wb.Build) '生成网页
        Else
            Dim nms() As String = {"单位名称","报障姓名","联系电话","故障描述"} '不能为空的列名数组
            For Each nm As String In nms
                If e.PostValues.ContainsKey(nm) = False Then '生成错误提示页
                    With wb.AddMsgPage("","msgpage","提交失败", nm & "不能为空!")
                        .icon = "Warn" '改变图标
                        .AddButton("btn1","返回").Attribute = ""
                    End With
                    e.WriteString(wb.Build)
                    Return '必须返回
                End If
            Next
            nms = New String() {"单位名称","报障姓名","联系电话","故障描述"}
            Dim dr As DataRow = DataTables("客户报修").AddNew()
            For Each nm As String In nms
                If e.PostValues.ContainsKey(nm) Then
                    dr(nm) = e.PostValues(nm)
                End If
            Next 

            For  Each key As String In e.Files.Keys
                If key = "up1" Then
                    For Each fln As String In e.Files(key)
                         'e.SaveFile(key, fln, ProjectPath & "Attachments\" & fln)
                         e.SaveFile(key,fln,"f:\web\uploadfiles\" & fln) '保存接收到的文件
                     Next
                    dr.Lines("故障图片") = e.Files(key)
                 End If
            Next    
   
            dr.save()
            With wb.AddMsgPage("","msgpage","提交成功", "非常抱歉,给您带来不便!我们将尽快处理,并及时反馈!") '生成成功提示页
                .AddButton("btn1","结束退出","https://www.baidu.com/")
            End With
            e.WriteString(wb.Build)       
        End If
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/6 15:08:00 [只看该作者]

            With wb.AddButtonGroup("form1","btg1",True)
                .Add("btn1", "提交", "button") '.Attribute= "" '调用js函数上传
            End With

 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2020/8/6 15:41:00 [只看该作者]

老师,这里改成button,后续的代码都没有作用了,表格不会增加行也不会有填好的数据,另一个页面也不会出现提交完成的提示

 

我原试过,如果只是在第9行增加.AddUploader("up128","照片",True)这句代码,不使用增强UPLOADER的相关代码,存储文件夹是有图片文件的,TABLE中增加的行也有相关数据(用谷歌浏览器模拟手机测试)

但这不是我最终想实现的。  


 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2020/8/6 15:43:00 [只看该作者]

另外,我原样用帮助中的代码,也是不能把文件存储到指定路径的文件夹中

 

设计过程:

1、在"d:\web"目录下,建立一个子目录lib,在这个目录建立一个文本文件,文件名为"ajaxform.js",文件内容为:

function submitForm(){
    show("tst1",2000);
    var result = submitAjaxForm('form1','afterSubmit');
}

function afterSubmit(result){
    hide("tst1");
    if (result=='OK') {
        show("tst2");
        location="upload.htm";
    }
    else{
        show("tst3",2000);
    }
}

提示: 这里的submitAjaxForm是通过异步方式运行的,用回调函数接收服务器返回的结果,因为如果用同步方式运行,将无法显示“正在上传”的提示。

2、HttpRequest事件代码:

Select Case e.Path
    Case "upload.htm"
        Dim wb As New weui
        wb.AddForm("","form1","receive.htm")
        With wb.AddInputGroup("form1","ipg1","文件上传")
            With .AddUploader("up128","照片",True)
                .AllowDelete = True '允许删除
                .Incremental = True '允许重复选择文件或连续拍照
            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/ajaxform.js'></script>") '引入脚本文件
        e.WriteString(wb.Build) '生成网页
    Case "receive.htm"
        For Each key As String In e.Files.Keys
            For Each fln As String In e.Files(key)
                e.SaveFile(key,fln,"d:\web\uploadfiles\" & fln) '保存接收到的文件
            Next
        Next
        e.WriteString("OK")
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/6 15:45:00 [只看该作者]


如果我们将Uploader的Incremental属性设置为True,可以实现:

1、再次选择上传文件,不会覆盖之前上传的文件。
2、如果开启了图片删除功能,可以逐个删除选择好的图片。

但是,在这种情况下,表单默认的提交功能,将不会上传选择好的文件,我们只能用submitAjaxForm函数提交表单,不过代码依旧很简单。


……


.Add("btn1""确定""button").Attribute= "onclick='submitForm()'" '调用js函数上传


……

1、在"d:\web"目录下,建立一个子目录lib,在这个目录建立一个文本文件,文件名为"ajaxform.js",文件内容为:

function submitForm(){
    show("tst1",2000);
    var result = submitAjaxForm('form1','afterSubmit');
}

function afterSubmit(result){
    hide("tst1");
    if (result=='OK') {
        show("tst2");
        location="upload.htm";
    }
    else{
        show("tst3",2000);
    }
}


 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2020/8/6 15:58:00 [只看该作者]

这些,原来我都已经做好了,就用帮助上的代码也不行,添加照片后,点击确定后没有任何反应,文件夹中也没有图片

 

不知问题在哪里??


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/6 16:02:00 [只看该作者]

请上传实例测试

 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2020/8/6 16:27:00 [只看该作者]

简单实例

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/6 17:04:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:增强uploader.zip


 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2020/8/11 20:44:00 [只看该作者]

还得请教老师下面代码,虽然照片能上传到服务器上指定的文件夹内,但是“故障图片”列的文件名前没有前缀根目录,后续无法调看或下载图片

如何在上传图片的时候,能自动在“故障图片"列的多个文件名前都增加根目录

请老师帮忙看看

..............

nms = New String() {"单位名称","报障姓名","联系电话","故障描述","故障图片"}
            Dim dr As DataRow = DataTables("客户报修").AddNew()
            dr("接报_待处理") = True
           
            For Each nm As String In nms
                If e.PostValues.ContainsKey(nm) Then
                    dr(nm) = e.PostValues(nm)
                End If
            Next
           
            For Each key As String In e.Files.Keys
                If key = "up1" Then
                    For Each fln As String In e.Files(key)
                        e.SaveFile(key,fln,"f:\web\uploadfiles\" & fln) '保存接收到的文件
                    Next
                    dr.Lines("故障图片") = e.Files(key)    ‘这里怎样写代码??            
                End If
            Next

.........................

[此贴子已经被作者于2020/8/11 20:45:12编辑过]

 回到顶部
总数 13 1 2 下一页