Foxtable(狐表)用户栏目专家坐堂 → 请问AddressOf这个回调指针,怎么使用?我现在用阿里云oss上传文件,想上传时显示进度条,里面有这个东西,实在看不懂


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

主题:请问AddressOf这个回调指针,怎么使用?我现在用阿里云oss上传文件,想上传时显示进度条,里面有这个东西,实在看不懂

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


加好友 发短信
等级:六尾狐 帖子:1264 积分:7827 威望:0 精华:4 注册:2017/12/31 14:53:00
请问AddressOf这个回调指针,怎么使用?我现在用阿里云oss上传文件,想上传时显示进度条,里面有这个东西,实在看不懂  发帖心情 Post By:2019/3/21 10:50:00 [只看该作者]

进度条的.net帮助文档:https://help.aliyun.com/document_detail/91759.html?spm=a2c4g.11186623.6.921.12021bd4UpjLJM
阿里云oss的.net sdk下载:http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32085/cn_zh/1515493045734/aliyun_oss_dotnet_sdk_2_8_0.zip?spm=a2c4g.11186623.2.10.2a7d4144HLORgn&file=aliyun_oss_dotnet_sdk_2_8_0.zip

我这边用sdk配合我的id,成功发送文件了

Dim endpoint As String = "https://oss-cn-shenzhen.aliyuncs.com" '阿里云oss深圳地域

以下内容只有回复后才可以浏览

Dim bucketName As String ="mbldt" '存储空间的名称
Dim LocalPath As String = "c:/123.jpg" '设置上传的文件的本地路径
Dim  UpLoadPath As String = "demo/321.jpg" '上传后的文件路径
Dim client As New Aliyun.OSS.OssClient(endpoint, accessKeyId, accessKeySecret) '根据SDK创建阿里云oss对象

Try    
    client.PutObject(bucketName, UpLoadPath , LocalPath) '执行上传
    messagebox.show("上传成功" )
Catch ex As Exception
    messagebox.show("上传失败,原因" & ex.Message)
End Try


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--------------
想在上述代码里,加入进度条功能,可以让用户看到上传进度,请问怎么改?




[此贴子已经被作者于2019/3/21 10:54:20编辑过]

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


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

帮助搜“AddressOf”

streamProgressCallback方法参考Button1_Click用法放到全局代码

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


加好友 发短信
等级:六尾狐 帖子:1264 积分:7827 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/3/21 11:16:00 [只看该作者]

        Sub PutObjectProgress(ByVal bucketName As String)
            Const key As String = "PutObjectProgress"

            Try

                Using fs = File.Open(fileToUpload, FileMode.Open)
                    Dim putObjectRequest = New PutObjectRequest(bucketName, key, fs)
                    putObjectRequest.StreamTransferProgress += AddressOf streamProgressCallback
                    client.PutObject(putObjectRequest)
                End Using

                Console.WriteLine("Put object:{0} succeeded", key)
            Catch ex As OssException
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. " & vbLf & "RequestID:{2}" & vbTab & "HostID:{3}", ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId)
            Catch ex As Exception
                Console.WriteLine("Failed with error info: {0}", ex.Message)
            End Try
        End Sub




        Private Sub streamProgressCallback(ByVal sender As Object, ByVal args As StreamTransferProgressArgs)
            Console.WriteLine("ProgressCallback - TotalBytes:{0}, TransferredBytes:{1}, IncrementTransferred:{2}", args.TotalBytes, args.TransferredBytes, args.IncrementTransferred)
        End Sub

主要是这2段代码,不是很懂怎么转换,可以指导一下吗?
[此贴子已经被作者于2019/3/21 11:22:22编辑过]

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


加好友 发短信
等级:超级版主 帖子:106028 积分:539233 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/21 11:54:00 [只看该作者]

放到全局事件

public Sub streamProgressCallback(ByVal sender As Object, ByVal args As StreamTransferProgressArgs)
            Console.WriteLine("ProgressCallback - TotalBytes:{0}, TransferredBytes:{1}, IncrementTransferred:{2}", args.TotalBytes, args.TransferredBytes, args.IncrementTransferred)
        End Sub

其它代码自己到这里转:http://converter.telerik.com/

AddHandler putObjectRequest.StreamTransferProgressAddressOf streamProgressCallback

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


加好友 发短信
等级:六尾狐 帖子:1264 积分:7827 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/3/21 15:43:00 [只看该作者]

它提示这段话里的“ public Sub streamProgressCallback(ByVal sender As Object, ByVal args As StreamTransferProgressArgs)  ”  的StreamTransferProgressArgs 不存在,没有定义。但是我看整个sample案例,也没怎么看到有这个参数,不知道是怎么来,怎么可以找到
[此贴子已经被作者于2019/3/21 15:43:02编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/21 15:56:00 [只看该作者]

StreamTransferProgressArgs

 

改成

 

Aliyun.OSS.Common.StreamTransferProgressArgs

 

或者

 

Aliyun.OSS.StreamTransferProgressArgs


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


加好友 发短信
等级:六尾狐 帖子:1264 积分:7827 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/3/21 16:29:00 [只看该作者]

全局代码定义好了,但是不知道怎么把监听挂钩上去上传事件

Dim endpoint As String = "http://oss-cn-shenzhen.aliyuncs.com" '阿里云oss深圳地域
Dim accessKeyId As String = "LTAInxxxmNxxxxUBg"
Dim accessKeySecret As String = "8EjqqYxxxxxxxxY5en1Irl8vHmSj"
Dim bucketName As String ="mbldt" '存储空间的名称
Dim LocalPath As String = "c:/123.jpg" '设置上传的文件的本地路径
Dim  UpLoadPath As String = "demo/321.jpg" '上传后的文件路径
Dim client As New Aliyun.OSS.OssClient(endpoint, accessKeyId, accessKeySecret) '根据SDK创建阿里云oss对象


Try
    
    Dim fs As System.IO.FileStream = System.IO.File.Open(LocalPath, System.IO.FileMode.Open)
    Dim putObjectRequest = New Aliyun.oss.PutObjectRequest(bucketName, UpLoadPath , fs)
    AddHandler putObjectRequest.StreamTransferProgress, AddressOf streamProgressCallback ‘感觉应该放窗口的afterload,但是不知道怎么放
    client.PutObject(putObjectRequest)
    'client.PutObject(bucketName, UpLoadPath , LocalPath) '执行上传
    messagebox.show("上传成功" )
Catch ex As Exception
    messagebox.show("上传失败,原因" & ex.Message)
End Try
[此贴子已经被作者于2019/3/21 16:48:02编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/21 16:54:00 [只看该作者]

在全局代码写代码啊。每上传一点,就会触发一次事件的啊,你在里面写进度条的代码就行啊。

 

比如

 

msgbox(CExp("ProgressCallback - TotalBytes:{0}, TransferredBytes:{1}, IncrementTransferred:{2}", args.TotalBytes, args.TransferredBytes, args.IncrementTransferred))

 

或者

 

output.show(CExp("ProgressCallback - TotalBytes:{0}, TransferredBytes:{1}, IncrementTransferred:{2}", args.TotalBytes, args.TransferredBytes, args.IncrementTransferred))


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


加好友 发短信
等级:六尾狐 帖子:1264 积分:7827 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/3/21 17:01:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/21 17:04:00 [只看该作者]

在上传的时候,绑定事件啊

 

AddHandler putObjectRequest.StreamTransferProgress, AddressOf streamProgressCallback


 回到顶部
总数 21 1 2 3 下一页