以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于图片上传压缩的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=121884)

--  作者:yuweijie
--  发布时间:2018/7/14 20:39:00
--  关于图片上传压缩的问题
要实现的目标是:1.只能拍照上传一张图片;2.压缩图片大小到1M左右。    下面的代码试了不会压缩,要怎么改?        

          With wb.AddInputGroup("form3","ipg3","文件上传") \'文件上传
                With .AddUploader("up1","请上传一张检查实时图片",False)
                    .AllowDelete = True \'允许删除
                    .Incremental = False \'不允许重复选择文件或连续拍照
                    .ScaleWidth = 100 \'自动压缩图片宽度为100个像素,高度等比例压缩
                    .TextPosition = 0 \'标题靠左
                End With
            End With

--  作者:有点甜
--  发布时间:2018/7/15 18:05:00
--  

认认真真看这个例子

 

http://www.foxtable.com/mobilehelp/scr/0106.htm

 

 


--  作者:yuweijie
--  发布时间:2018/7/15 23:11:00
--  
看了,例子中一定要.Incremental = True \'这样就控制不了上传照片的张数,还有其他办法吗?
--  作者:有点甜
--  发布时间:2018/7/16 9:17:00
--  

用2楼的方法,用js判断和控制个数,如

 

var v1 = document.getElementById("up1_thumbnails").getElementsByTagName("li").length

alert(v1)

if(v1 > 1) {

   alert("个数不能超过1个")

   return false

}

 

 


--  作者:yuweijie
--  发布时间:2018/7/16 12:02:00
--  
我加了日期比较,要上传当天日期的照片,但 通过.ScaleWidth = 100 压缩后,就不能判断了
--  作者:有点甜
--  发布时间:2018/7/16 12:11:00
--  
以下是引用yuweijie在2018/7/16 12:02:00的发言:
我加了日期比较,要上传当天日期的照片,但 通过.ScaleWidth = 100 压缩后,就不能判断了

 

你的意思是读取照片的拍摄时间?如这个? http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=78730&replyID=&skin=1

 

如果压缩以后就不能获取?


--  作者:yuweijie
--  发布时间:2018/7/16 13:38:00
--  
是的
--  作者:有点甜
--  发布时间:2018/7/16 16:04:00
--  

回复楼上,确实有你说的这个问题。

 

用js读取图片信息,然后赋值到网页那里,一起提交吧。

 

1、把exif.js拷贝到web/lib文件夹下

 

http://code.ciaoca.com/javascript/exif-js/version/exif-js.zip

 

http://code.ciaoca.com/javascript/exif-js/

 

2、httprequest事件,写代码

 

Dim fl As String = "c:\\web\\" & e.path \'合成含路径的文件名
If filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".htm",".html",".css",".zip",".rar" \'这里加上了js扩展名
            e.WriteFile(fl)
            Return \'这里必须返回
    End Select
End If


Select Case e.Path
    Case "test.htm", ""
        Dim wb As New weui
        wb.AddForm("","form1","receive.htm")
        With wb.AddInputGroup("form1","ipg1","文件上传")
            With .AddUploader("up128","照片",True)
                .AllowDelete = True \'允许删除
                .Incremental = True \'允许重复选择文件或连续拍照
                .ScaleWidth = 400 \'自动压缩图片宽度为400个像素,高度等比例压缩
            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>") \'引入脚本文件
        wb.AppendHTML("<script src=\'./lib/exif.js\'></script>") \'引入脚本文件
        wb.AppendHTML("<script>up128.addEventListener(\'change\', function(e){EXIF.getData(e.target.files[0], function() {alert(EXIF.pretty(this));alert(EXIF.getTag(this, \'DateTime\'))})},false );</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:\\123.jpg") \'保存接收到的文件
            Next
        Next
        e.WriteString("OK")
End Select

 

3、把弹出的值处理一下,赋值到你文本框里面即可。


--  作者:yuweijie
--  发布时间:2018/7/17 13:35:00
--  
又回到了原来的问题,只要设置了.Incremental = True

var v1 = document.getElementById("up1_thumbnails").getElementsByTagName("li").length;

alert(v1);

无论拍了几张照,跳出的始终都是0


--  作者:有点甜
--  发布时间:2018/7/17 17:46:00
--  

我测试没问题啊。红色代码改成自己的的。

 

var v1 = document.getElementById("up1_thumbnails").getElementsByTagName("li").length;

alert(v1);