利用WebService实现远程服务器文件的上传和下载

Spring Cloud Alibaba 服务发现和远程调用 Spring Cloud Alibaba 服务发现和远程调用 ​ Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。 1.创建一个springboot工程 1.删除主 阅读详情

有时候我们通常需要把上传的图片或其他文件放在其他服务器上,以便和网站服务器分开,这时候ASP.NET的WebService就派上大用场了。我们可以在文件服务器上运行一个WebService,提供上传和下载文件的方法,然后在网站服务器上的网站中引用这个WebService,调用上传或下载的方法,实现对远程服务器上的文件上传和下载的功能。以下操作在VS2005环境中完成。
      先新建一个WebService项目UpDownFile,里面自动建了一个叫Service1的asmx和cs文件,看不顺眼这个名字的就把它重命名吧,我就把它重命名为了UpDownFile.asmx,把里面的class也重命名为UpDownFile了,这样看起来顺眼多了。
UpDownFile.asmx.cs的代码如下:

using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.IO;

namespace UpDownFile
{
/**//// <summary>
/// UpDownFile 的摘要说明
/// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
public class UpDownFile : System.Web.Services.WebService
{
//将Stream流转换为byte数组的方法。
//PS:原本想把这个方法也当做WebMethod的,因为客户端在上传文件时也要调用该方法,后来发现Stream类型的不能通过WebService传输。。。:(
public byte[] ConvertStreamToByteBuffer(Stream s)
{
            MemoryStream ms = new MemoryStream();
int b;
while ((b = s.ReadByte()) != -1)
{
                ms.WriteByte((byte)b);
            }
return ms.ToArray();
        }

//上传文件至WebService所在服务器的方法,这里为了操作方法,文件都保存在UpDownFile服务所在文件夹下的File目录中
        [WebMethod]
public bool Up(byte[] data, string filename)
{
try
{
                FileStream fs = File.Create(Server.MapPath("File/") + filename);
                fs.Write(data, 0, data.Length);
                fs.Close();
return true;
            }
catch
{
return false;
            }
        }

//下载WebService所在服务器上的文件的方法
        [WebMethod]
public byte[] Down(string filename)
{
string filepath = Server.MapPath("File/") + filename;
if (File.Exists(filepath))
{
try
{
                    FileStream s = File.OpenRead(filepath);
return ConvertStreamToByteBuffer(s);
                }
catch
{
return new byte[0];
                }
            }
else
{
return new byte[0];
            }
        }
    }
}

接下来就是在客户端网站中调用了,先添加Web引用,干脆引用名也用UpDownFile算了,首先是DownFile.aspx

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

namespace HelloWorld
{
public partial class DownFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
            UpDownFile.UpDownFile down = new UpDownFile.UpDownFile();
byte[] file = down.Down(Request.QueryString["filename"].ToString());
            Response.BinaryWrite(file);
        }
    }
}

接下来是上传的演示文件UpFile.aspx

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

namespace HelloWorld
{
public partial class UpFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

        }

protected void Button1_Click(object sender, EventArgs e)
{
//保存到远程File文件夹
//FileUpload1是aspx页面的一个FileUpload控件
            UpDownFile.UpDownFile up = new UpDownFile.UpDownFile();
            up.Up(ConvertStreamToByteBuffer(FileUpload1.PostedFile.InputStream), FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\") + 1));
        }

protected byte[] ConvertStreamToByteBuffer(Stream s)
{
            MemoryStream ms = new MemoryStream();
int b;
while ((b = s.ReadByte()) != -1)
{
                ms.WriteByte((byte)b);
            }
return ms.ToArray();
        }
    }
}

其实主要是UpDownFile.asmx.cs这个Web服务文件,客户端怎么调用就随便了。大家看到了,Up和Down方法中传输的都是byte[]数组,因为WebService不支持Stream传输,那就把文件转换为二进制数组来传递。
      此外也可以制作利用WebService远程存储数据库的东西,因为有时候远程服务器的1433端口不能开放,只能开放80,那WebService就派上用场了。要注意的是,DataTable不能通过WebService传输,只能附在DataSet上来传输,此外很多类型也不可以通过WebService传,具体可以通过其传输的类型请参考书籍


C++实现WebService文件上传下载的实践指南 本文还有配套的精品资源,点击获取 简介:WebService技术允许应用间通过HTTP通信实现服务共享和数据交换。在C++中,利用XML和SOAP协议,开发者可以创建处理文件上传和下载的WebService。这涉及文件I/O操作,服务端接口创建,以及客户端和服务端间的HTTP请求处理。本教程将指导你完成从理解基本概念到实现安全高效文件传输系统的全过程。 1. We... 阅读详情

相关推荐

使用WebService上传一个附件或者多个附件的实现方式

WebService 附件 大附件 多附件

Alibaba轻量应用服务器搭建,以及远程客户端连接;以及Xshell连接上传文件

 Alibaba轻量应用服务器,我购买的是通用版,性价比还可以,好比买了个越野车,迫不及待的想开出去耍耍: 官方文档地址如下: https://help.aliyun.com/document_detail/59083.html?spm=5176.10173289.107.3.58952e7782tDfP#windows (1)首先登录到控制台,看下控制台的目录结构: (2)不同于...

Syntacticsugar's blog 2899

webservice服务端

WebService就是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然。跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。 远程调用,就是一台计算机的应用可以调用其他计算机上的应用。例如:支付宝,支付宝并没有银行卡等数据,它只是去调用银行提供的接口来获得数据。还有天气预报等,也是气象局把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能。 wsimport -keep -s E:\workspace\client\src -p com.cn.phone vebose wsdl地址

阿里云部署java web运行环境

在平常使用阿里云服务器时,我们是在命令行操作远程服务器,然后用ftp将文件上传到我们的远程阿里的tomcat目录下。     一般我是用Xmanage来连接阿里云服务器(里面有各种协议的连接工具):   如图:主机填写我们买的服务器ip,然后用户名密码填写连接就可以了,连接成功后就和我们在本地操作linux系统一样了。 一般阿里云服务器,我们安装各种环境都是下载支持包然后再各种配

u010214269的专栏 1526

opencv+nvcodec实现视频硬解码

最近遇到一个新项目,AI推理在上,为了方便和节省成本的考虑决定研究下模块。根据官网的说法显卡具有独立的和模块,所以理论上和是独立互不干涉的。以前的项目都只是把显卡当成推理工具,没有将它的功能利用起来,本身也是一种浪费。事实真的有这么丝滑吗?看到这里,如果你真的觉得是白叫的那就真的是了,事实究竟如何,请听我娓娓道来。NVCODEC全称是 NVIDIA VIDEO CODEC,是NVIDIA为绝大多数显卡配置的硬件编解码单元。不一定是所有显卡都有,一般来讲越新的显卡硬件编解码就越强,支持的格式也就越新。

jiexijihe945的博客 1万+

微信爬虫服务器,微信文章爬虫使用教程 - 八爪鱼采集器

对于某些用户来说,直接自定义规则可能有难度,所以在这种情况下,我们提供了网页简易模式,网页简易模式下存放了国内一些主流网站爬虫采集规则,在你需要采集相关网站时可以直接调用,节省了制作规则的时间以及精力。微信文章采集下来有很多作用,比如可以将自己行业中最近一个月之内发布的内容采集下来,然后分析文章标题和内容的一个方向与趋势。所以本次介绍八爪鱼简易采集模式下“搜狗公众号”的使用教程以及注意要点。步骤一...

weixin_26712065的博客 3256

利用 WebService实现远程服务器文件的上传和下载

有时候我们通常需要把上传的图片或其他文件放在其他服务器上,以便和网站服务器分开,这时候ASP.NET的WebService就派上大用场了。我们可以在文件服务器上运行一个WebService,提供上传和下载文件的方法,然后在网站服务器上的网站中引用这个WebService,调用上传或下载的方法,实现对远程服务器上的文件上传和下载的功能。以下操作在VS2005环境中完成。先新建一...

weixin_30512089的博客 155

airodump-ng、aircrack-ng使用教程

wifi破解、airodump-ng、aircrack-ng脚本

ssmbyss的博客 2233

C#客户端上传图片到远程服务器(单张上传)

C#图片上传服务器

weixin_42151589的博客 3338

Transformers 实战修炼与源码剖析专栏大纲

本专栏以 Hugging Face Transformers 为主线,围绕“能用、会调、敢上线、懂源码”四个目标展开。内容不把理论堆成公式墙,而是用真实或拟真的业务场景驱动:客服分类、合同抽取、知识库问答、模型微调、推理服务、监控告警、源码扩展等。采用“业务痛点 → 三人剧本对话 → 代码实战 → 总结思考”的四段式结构,让读者在动手完成一个个小项目的过程中,逐步理解 Tokenizer、Model、Pipeline、Trainer、Generation、PEFT、Accelerate、Serving等概念

davidwang456的专栏 922

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1446

CSOAP:实现调用webservice接口上传文件日志

CSOAP:实现调用webservice接口上传文件日志 【下载地址】CSOAP实现调用webservice接口上传文件日志 这是一个基于C++和SOAP协议的开源项目,专注于实现调用webservice接口的核心功能。项目提供了完整的源码和DEMO示例,支持文件上传、日志上传以及消息获取等实用功能。开发环境要求为Vis...

gitblog_06706的博客 866

Python学习第1天:初识Python

Python 作为目前最流行的编程语言之一,凭借其简洁优雅的语法和强大的生态系统,成为了无数开发者的首选。本系列文章将带你从零基础入门,逐步掌握 Python 编程的核心技能。今天我们先来认识 Python,并安装好开发环境。Python(英式发音:/ˈpaɪθən/;美式发音:/ˈpaɪθɑːn/)是由荷兰人吉多·范罗苏姆(Guido von Rossum)发明的一种编程语言,是目前世界上最受欢迎和拥有最多用户的编程语言。

tigerhhzz的博客 434

webservice 上传下载文件,图片(转贴)

webservice 上传下载文件,图片

胡杰的专栏 3657

代码解读:使用Stable Diffusion完成相似图像生成任务

作为内容生产重要的一部分,生成相似图像是一项有意义的工作,例如很多内容创作分享平台单纯依赖用户贡献的图片已经不够了,最省力的方法就是利用已有的图片生成相似的图片作为补充。这篇博客详细解读基于Stable Diffusion生成相似图片的原理和代码。

沉迷单车的追风少年 1393

YOLOV26详解 从原理到部署

计算机视觉领域最具影响力的目标检测框架迎来重大里程碑。2026年1月,Ultralytics 正式发布 YOLOv26——这不是一次简单的版本迭代,而是一场面向边缘计算时代的架构重构。本专栏基于 Ultralytics 官方技术白皮书、YOLO Vision 2025 大会首发内容及国际前沿研究成果,系统拆解 YOLOv26 从算法原理到工程落地的全栈技术体系。与常规教程不同,我们聚焦与,帮助你在端侧 AI 部署的实战中掌握核心竞争力。

u012133341的博客 2022

在Android中通过XFire WebService远程上传以及下载图片

有时我们可以看到,图片往往被提交到服务器端,这里我通过XFire框架来实现远程上传以及下载图片的功能。 首先我们来看看从服务器端下载图片的功能:   我用的是KSOAP框架,我之前的文章有讲述过。在这里不要多说,贴上代码。 首先我们看看Acitivity中的代码:   package com.net.connect.app; import java.io.File; imp...

thunder_yan的专栏 125

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android之调用webservice 实现图片上传下载

最近boss要求做android客户端的图片上传和下载,就是调用服务器的webservice接口,实现从android上传图片到服务器,然后从服务器下载图片到android客户端。   需求下来了,开始动脑筋了呗。             通常,我们调用webservice,就是服务器和客户端(浏览器,android手机端等)之间的通信,其通信一般是传 xml或json格式

binyao02123202的专栏 1344

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WebService上传文件到服务器(转)

using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using Syst...

weixin_30293135的博客 273

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: 字符串string和内存流MemoryStream及比特数组byte[]互转比转换
下一篇: C#基础概念二十五问
百炼成钢百忍成佛
博客等级 码龄24年 144粉丝 151原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值