安卓端上传小文件到运行asp.net网站的服务器

本文介绍如何从安卓设备通过ASP.NET API接口上传文件到服务器。内容包括创建ASP.NET Web服务接口,设置安卓端权限,使用ksoap2库进行网络请求,以及处理网络操作的线程安全。同时提供了完整的两端源码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天来教大家如何安卓端(手机、平板等)上传到asp.net开发的网站上。
  这里我们先要组建一个局域网,当然也可以直接同一电脑上测试,只是这里面要注意一些问题,会在后面讲到。
  安卓端是无法将文件直接上传asp.net开发的网站的服务器上的,需要通过asp.net写一个api接口,然后安卓调用此接口,所以整个任务也可以分为两个部份,一个是asp.net端(服务端) 的api接口代码,另一个是安卓端(用户端)的代码。
  首先,是asp.net端。
  1.启动visual studio.net,新建或打开一个asp.net网站,在网站添加一个用于上传文件的文件夹,我这里取名为upload。
  2.在“解决方案资源管理器”上右键“添加新项”,弹出“添加新项”对话框,在对话框中选择“Web服务”,如图1,我这里取名为AndroidUpload,添加后会发现网站根目录上多出了一个AndroidUpload.asmx的文件,在App_code下则多出了一个AndroidUpload.cs文件,打个这个文件,编辑代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.IO;

/// <summary>
///AndroidUpload 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
// [System.Web.Script.Services.ScriptService]
public class AndroidUpload : System.Web.Services.WebService {
   

    public AndroidUpload () {
   

        //如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }

    [WebMethod]
    public bool FileUploadImage(string title, string contect, string bytestr, string ext)
    {
   
        string name = "";
        if (bytestr == "")
        {
   
            return false;
        }
        try
        {
   
            name = DateTime.Now.Year.ToString() + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second;
            bool flag = StringToFile(bytestr, Server.MapPath(@"upload\" + DateTime.Now.Ticks.ToString() + "." + ext));
            // @"c:\444\ld1.jpg"

            //D:\\" + name + ".jpg
            return true;
        }
        catch
        {
   
            return false;
        }

    }
    protected System.Drawing.Image Base64StringToImage(string strbase64)
    {
   
        try
        {
   
            byte[] arr = Convert.FromBase64String(strbase64);
            MemoryStream ms = new MemoryStream(arr);
            ms.Write(arr, 0, arr.Length);
            System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
            ms.Close();
            return image;
            //return bmp; 
        }
        catch (Exception ex)
        {
   
            throw ex;
        }
    }
    /// <summary>  
    /// 把经过base64编码的字符串保存为文件  
    /// </summary>  
    /// <param name="base64String">经base64加码后的字符串 </param>  
    /// <param name="fileName">保存文件的路径和文件名 </param>  
    /// <returns>保存文件是否成功 </returns>  
    private static bool StringToFile(string base64String, string fileName)
    {
   
        //string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + @"/beapp/" + fileName;  

        System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Create);
        System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs);
        if (!string.IsNullOrEmpty(base64String) && File.Exists(fileName))
        {
   
            bw.Write
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值