用户
 找回密码
 立即注册

3

主题

5

帖子

189

积分

注册会员

Rank: 2

积分
189
发表于 2020-1-3 08:48:58
我想把手机里的图片、视频上传到服务器,通过
  1. <div>            this.camera1.Mode = CameraMode.Album;</div><div>            camera1.AlbumCount = 9;</div><div>            this.camera1.GetClientPhotoPath();</div>
复制代码


将所有文件显示到  albumView 中,用户可以删除选中的图片或视频
  1. <div> private void camera1_ClientImageCaptured(object sender, ClientResourceResultArgs e)</div><div>        {</div><div>            foreach (KeyValuePair<string, string> clientRes in e.Resources)</div><div>            {</div><div>                this.albumView1.Items.Add(new AlbumViewItem(clientRes.Value));</div><div>                this.albumView1.Items.Refresh();</div><div>            }</div><div>        }</div>
复制代码
可是如何将文件上传到服务器中呢,我尝试了
  1. <div>  System.Net.WebClient mClient = new WebClient();</div><div>  mClient.UploadFile(sURL, "POST", sFile);</div>
复制代码
系统报错,说不支持URI
我又尝试了
  1. <div>               BinaryResultArgs br = new BinaryResultArgs();</div><div>                br.SaveFile(sFile, MobileResourceManager.DefaultImagePath);</div>
复制代码
说数据为空?


有没有什么别的办法啊  
使用道具 举报 回复
使用道具 举报 回复 支持 反对
发表于 2020-1-3 14:09:43
Lula.Jin 发表于 2020-1-3 10:20
可参考https://www.smobiler.com/guide/file.aspx

camera 在拍照的时候, this.camera1.Mode = CameraMode.CameraAndAlbum;

1、选择 相机 触发 camera1_ImageCaptured , 如果没有调用 e.SaveFile 保存  e.ResourceID 仅仅是一个文件名称,没有路径

2、选择相册 触发 camera1_ImageCaptured , 返回的是 照片的完整路径

问题来了,

1、选择 相机  我想预览照片(比如显示到 albumView1 里面),如何获取 ResourceID 呢??

2、如果 使用this.camera1.GetClientPhotoPath(); 通过调用 camera1_ClientImageCaptured事件,可以获取手机文件,    for (int i = 0; i < albumView1.Items.Count; i++)
            {
                 string sFile = albumView1.Items.ResourceID;
            }

我如何将用户确认过的文件上传到服务器呢?

  this.Client.File.Upload((obj, args) =>
            {

                if (args.isError == false)
                {
                    args.SaveFile(sFile, MobileResourceManager.DefaultImagePath);
                    this.Toast(string.Format("{0}", args.ResourceID));
                }
                else
                {
                    Toast(args.error);
                }
            });
这段代码又让用户重新进行选择,感觉很累赘,能不能直接使用 BinaryResultArgs SaveFile???
使用道具 举报 回复 支持 反对
使用camera上传图片,图片数据在camera1_ImageCaptured事件的参数e.Data,
实现预览可以窗体中加入image控件,image1.ResourceData=e.Data      image1.ResourceMode = ResourceMode.Data;
使用道具 举报 回复 支持 反对
发表于 2020-1-15 17:41:49
这是一个比较普遍的问题,希望官方技术支持能给出一个比较完整的代码。
使用道具 举报 回复 支持 反对
发表于 2020-1-15 19:00:16
根据官方技术支持指引,上传相册照片的程序如下:
   
private void button1_Press(object sender, EventArgs e)
        {
            camera1.GetPhoto();//调用照相机
        }

private void camera1_ImageCaptured(object sender, BinaryResultArgs e)
        {
            string Name1 = @"C:\inetpub\wwwroot\images\个人半身照片";
            image1.ResourceData = e.Data;
            image1.ResourceMode = ResourceMode.Data;

            if (string.IsNullOrEmpty(e.error))
            {
                //e.SaveFile();//不指定路径,图片默认保存在项目下\bin\Debug\Resources\Upload下
                //e.SaveFile("图片名称"); 保存图片,图片名称自定义
                //e.SaveFile("图片名称", MobileResourceManager.DefaultImagePath); 第二个参数为路径,图片保存在项目下\bin\Debug\Resources\Image下
                e.SaveFile("黄龙风光20200115.jpg", Name1);//重新命名照片,指定上传文件夹并上传。
               
            }

        }
使用道具 举报 回复 支持 反对
发表于 2020-1-17 17:43:08
此处一传图片非原图,3-4M的图片上传后大概是100多K,能否设置一个上传原图的选项?
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册