zoukankan      html  css  js  c++  java
  • Android调用webservice上传文件

    工作中遇到了webservice上传文件的情况,起初只是上传图片,由于图片的内存较小,故可以直接将图片转换为base64编码的字符串,具体代码如下

    // imageName为图片的base64编码字符串,strFileName为图片的上传路径
    MemoryStream stream = new MemoryStream(Convert.FromBase64String(imageName));
                        Bitmap bitmap = (Bitmap)Image.FromStream(stream);
                        bitmap.Save(strFileName, ImageFormat.Png);
    

      后面由于工作需要,需添加上传视频的功能,但是由于视频的内存空间可能比较大,当使用base64编码时,字符串接收会超出有效长度,故只能采用form表单的形式上传,android端使用了表单的形式上传文件,接口中无法直接传入参数,需使用接口中代码如下

     HttpContext.Current.Request.Params["strDbid"].ToString()来获取相应的参数,然后做进一步操作
           string strDbid = HttpContext.Current.Request.Params["strDbid"].ToString();//这里如果前台没有用jsonp,那么获取到的是一个?,所以处理完之后,前台是没法获取到服务器返回的内容的。
                //上面代码必须,不能注释
                //中间代码执行自己的业务操作,可返回自己的任意信息(多数据类型)
                HttpFileCollection files = HttpContext.Current.Request.Files;
           //string strFileName = HttpContext.Current.Request["filename"];获取文件名称 byte[] b = new byte[files[0].ContentLength]; System.IO.Stream fs = (System.IO.Stream)files[0].InputStream; fs.Read(b, 0, files[0].ContentLength); ///定义并实例化一个内存流,以存放提交上来的字节数组。 MemoryStream m = new MemoryStream(b); ///生成文件名称 string str = DateTime.Now.ToString("yyyyMM"); string str2 = DateTime.Now.ToString("yyyyMMdd"); string path = this.strImageWebUrl + @"uploadsC" + strDbid; string str5 = this.strImageWebUrl + @"uploadsC" + strDbid; if (!Directory.Exists(path + @"movs" + str)) { Directory.CreateDirectory(path + @"movs" + str); } path = path + @"movs" + str; if (!Directory.Exists(path + @"" + str2)) { Directory.CreateDirectory(path + @"" + str2); } path = path + @"" + str2; int num = new Random().Next(0x2710); string str6 = DateTime.Now.ToString("yyyyMMddHHmmss") + num.ToString() + Guid.NewGuid().ToString() + ".mp4"; string filename = path + @"" + str6;//文件物理路径
           //FileStream f = new FileStream(Server.MapPath("\UploadFile") + "\" + files[0].FileName, FileMode.Create);
                FileStream f = new FileStream(filename, FileMode.Create);
                ///把内内存里的数据写入物理文件
                m.WriteTo(f);
                m.Close();
                f.Close();
                f = null;
                m = null;
    

      android端代码就不多说了  我也不会  嘿嘿

  • 相关阅读:
    20135213——信息安全系统设计基础第十周学习总结
    20135213 20135231 信息安全系统设计基础课程第一次实验报告
    20135213——信息安全系统设计基础第九周学习总结
    家庭作业 汇总(更新调整)
    20135213——信息安全系统设计基础第八周期中总结
    家庭作业第三章3.57
    20135213——信息安全系统设计基础第七周学习总结
    20135213——信息安全系统设计基础第六周学习总结
    笔记
    20135213-信息安全系统设计基础第四周学习总结
  • 原文地址:https://www.cnblogs.com/wuchaofan1993/p/7144659.html
Copyright © 2011-2022 走看看