当前位置:首页 » 文件管理 » webservice文件上传下载

webservice文件上传下载

发布时间: 2022-07-15 21:16:10

Ⅰ 如何使用WebService上传文件至SharePoint 文档库中

问题描述: 通过WebService的形式将文件上传至SharePoint的文档库,我认为有2个难点,其中比较好解决的是文件传输,这个文件传输有好多种办法,比如使用ftp协议.最难的一个可能就是权限问题.(原来我的解决方法是正确的,只是模拟用户的时候域名写的不对,哈哈,)
我想会有好多人也会遇到这个问题,我的这个解决方法,在一定程度上可以解决一些问题.(^_^),关于身份模拟请参考msdn中的描述。此程序片段不包含目录验证的代码.
这个问题困扰了我好久.我曾经尝试过多种方法.但一样的程序,在windows应用程序里运行就ok,一放到webservice里就出问题了.(不过今天晚上又测试了多次,证明我的方法是有效的,兴奋中....)
以下是通过文件监控的方式实现的文件上传程序代码:(里面采用了模拟windows用户的方式模拟当前的操作用户)
private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e)
{
Application.DoEvents();
WindowsImpersonationContext wic = null;
if( wic != null ) wic.Undo();
try
{
System.IO.File.Copy(e.FullPath,"c://AresTemp//"+e.Name,true);
FileStream fStream;
fStream= File.OpenRead("c://AresTemp//"+e.Name);
byte[] contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);
fStream.Close();
if(File.Exists("c://AresTemp//"+e.Name)==true)
{
File.Delete("c://AresTemp//"+e.Name);
}

wic =SPUtil.GetWindowsIdentity();
SPWeb myweb=new SPSite(SharePointURL).OpenWeb();
myweb.AllowUnsafeUpdates=true;

myweb.Files.Add(SharePointURL+"/"+e.Name,contents,true);
// if (File.Exists(e.FullPath))
// File.Delete(e.FullPath);
if( wic != null ) wic.Undo();
AresLog.recordLog("文件上传成功","","",e.Name ,e.FullPath);

}
catch(Exception ee)
{
if( wic != null ) wic.Undo();
AresLog.recordLog("上传文件异常","","",ee.Message,ee.StackTrace);
}
}
以下是我写的通过ftp的方式,将文件传输到本地,然后读取本地磁盘文件,上传到sharpoint文档库的代码:(需要注意域名的书写,此代码已经过本机测试成功,但具体环境不同,也可能造成一定的差异)
[WebMethod]
public string UpLoadFilesToSPS(string FtpServer,string FtpUser,string FtpPwd,string FtpPath,string FilesName,string FilesInfo,string targetUrl)
{
//ftp settings
FtpClient myFTP=new FtpClient();
myFTP.Server=FtpServer;
myFTP.Username=FtpUser;
myFTP.Password=FtpPwd;
myFTP.RemotePath=FtpPath;
//filePath,info
string[] fName=Microsoft.VisualBasic.Strings.Split(FilesName,";",-1,Microsoft.VisualBasic.CompareMethod.Text);
string[] fInfo=Microsoft.VisualBasic.Strings.Split(FilesInfo,";",-1,Microsoft.VisualBasic.CompareMethod.Text);
int i=0;
//检查和创建本地环境
if(Directory.Exists("C://AresTemp")==false)
{
Directory.CreateDirectory("C://AresTemp");
}
foreach(string fDirectory in fInfo)
{
if(Directory.Exists("C://AresTemp//"+fDirectory)==false)
{
Directory.CreateDirectory("C://AresTemp//"+fDirectory);
}
}
//文件下载
for(i=0;i<fName.Length;i++)
{
myFTP.DownloadEx(fName[i],"C://AresTemp//"+fInfo[i]+"//"+fName[i],true);
}
myFTP.Close();
WindowsImpersonationContext wic = null;

if( wic != null ) wic.Undo();
//获取模拟用户信息
ZSoft.WindowsImpersonation.WIUser myUser=new ZSoft.WindowsImpersonation.WIUser(ServerUser,ServerName,ServerPassword);
myUser.impersonateValidUser();
wic =myUser.wic;
SPWeb myweb=new SPSite(targetUrl).OpenWeb();
myweb.AllowUnsafeUpdates=true;
for(i=0;i<fName.Length;i++)
{
FileStream fStream;
fStream= File.OpenRead("c://AresTemp//"+fInfo[i]+"//"+fName[i]);
byte[] contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);
fStream.Close();
myweb.Files.Add(targetUrl+"/"+fInfo[i]+"//"+fName[i],contents,true);
}
myweb.Close();
if( wic != null ) wic.Undo();
return "文件传输成功!";
}

Ⅱ webservice 可以传文件吗

当然可以传附件了、、。。。
axis用过吧?版本1就可以
将你要传送的文件封装在DataHandler中,然后将DataHandler对象或DataHandler数组(多个文件传送的时候)作为客户端调用函数的参数(从客户端上传文件到服务器)Axis服务的返回类型(从服务器端下载文件到客户端)进行传输。
1.服务端程序:

假设传输多个文件:在服务器端将文件取出来,并将文件封装在DataHandler数组中。
代码如下:

DataHandler[] ret = new DataHandler[totalFileNum];
... ...
java.io.File myFile = new java.io.File(filePath);
if(myFile.isFile() && myFile.canRead())
{
String fname = myFile.getAbsoluteFile().getCanonicalPath();
DataHandler[0] = new DataHandler(new FileDataSource(fname));
}
... ...

return ret;

2. 客户端的访问

代码如下:
Service service = new Service();
Call call = (Call) service.createCall();

URL myURL = new URL("http://192.168.0.26:8080/axis/servlet/AxisServlet");
call.setTargetEndpointAddress(myURL); //设定服务的主机和位置
call.setOperationName(new QName("urn:MyAttachServer","echoDir")); //设置要调用的服务的方法
QName qnameAttachment = new QName("urn:MyAttachServer","DataHandler");

call.registerTypeMapping(DataHandler.class, qnameAttachment, .class,.class); //为附件(即DataHandler类)创建序列化生成器

call.addParameter("source", XMLType.XSD_STRING ,ParameterMode.IN); //设置服务调用方法的传入参数类型
call.setReturnType(XMLType.SOAP_ARRAY); //设置调用服务方法的返回类型,由于返回的是DataHandler数组,所以设置为SOAP_ARRAY类型
javax.activation.DataHandler[] ret = (javax.activation.DataHandler[])call.invoke(new Object[]{null}); //调用方法

for (i = 0; i < ret.length; ++i)
{
DataHandler recDH = ret[i];
java.io.File receivedFile = new java.io.File(recDH.getName()); //文件生成
}

3. 服务的部署:

注意:你要在部署的时候,定义DataHandler的序列化生成器。

编写deploy.wsdd文件:

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:ns1="urn:att_STC_Server" >
<service name="urn:att_STC_Server" provider="java:RPC" >
<parameter name="className" value="samples.att_STC.att_STC_Server"/>
<parameter name="allowedMethods" value="echoDir"/>

<typeMapping deserializer="org.apache.axis.encoding.ser."
languageSpecificType="java:javax.activation.DataHandler" qname="ns1:DataHandler"
serializer="org.apache.axis.encoding.ser."
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</service>

</deployment>

自己试试。

Ⅲ 如何通过WebService批量上传大文件

Asp.Net
一般支持上传4MB大小文件,为实现上传超过4MB大小文件,Asp.Net项目需要调整配置(Web.Config)的httpRuntime节点。

<httpRuntime maxRequestLength="40960" executionTimeout="1800" />

maxRequestLength:指定输入流缓冲阈值限制(以 KB
为单位)。此限制可用于防止拒绝服务攻击;例如,因用户向服务器发送大型文件而导致的拒绝服务攻击。

默认值为 4096 (4 MB)。

executionTimeout: 指定在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。默认值110秒。

2.2. 服务开发

本人采用接收字节的方式开发Web Service,提供是创建还是累加参数,根据参数将文件字节写入文件中。示例代码如下:

步骤阅读

3. WinForm 程序开发

WinForm是·Net开发平台中对Windows Form的一种称谓。新增WinForm程序项目,添加文件上传服务引用。

文件上传关键源码

localhost.WebService mWebService = new WinTest.localhost.WebService();

mWebService.CookieContainer = new System.Net.CookieContainer();

mWebService.Timeout =- 1;

对 XML Web services 的同步调用的超时(以毫秒为单位)。默认为 100000 毫秒。提示:如果将 Timeout 属性设置为
Timeout =-1,则指示该请求无超时。

Ⅳ 如何使用webservice上传文件

Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
(Web Service 在此不做过多介绍,具体介绍可网络下)
2. WEB Service 开发
2.1. 服务配置
Asp.Net 一般支持上传4MB大小文件,为实现上传超过4MB大小文件,Asp.Net项目需要调整配置(Web.Config)的httpRuntime节点。
<httpRuntime maxRequestLength="40960" executionTimeout="1800" />
maxRequestLength:指定输入流缓冲阈值限制(以 KB 为单位)。此限制可用于防止拒绝服务攻击;例如,因用户向服务器发送大型文件而导致的拒绝服务攻击。
默认值为 4096 (4 MB)。
executionTimeout: 指定在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。默认值110秒。
2.2. 服务开发
本人采用接收字节的方式开发Web Service,提供是创建还是累加参数,根据参数将文件字节写入文件中。示例代码如下:

3. WinForm 程序开发
WinForm是·Net开发平台中对Windows Form的一种称谓。新增WinForm程序项目,添加文件上传服务引用。

3.1. Winform 程序实现效果
程序界面简单设计为:选择文件按钮,选择文件列表,上传文件按钮、上传信息及上传进度。

3.2. Winform 上传文件效果
示例演示:选择两大于4MB文件进行上传,上传成功。

3.3. 文件上传关键源码
localhost.WebService mWebService = new WinTest.localhost.WebService();
mWebService.CookieContainer = new System.Net.CookieContainer();
mWebService.Timeout =- 1;

对 XML Web services 的同步调用的超时(以毫秒为单位)。默认为 100000 毫秒。提示:如果将 Timeout 属性设置为 Timeout =-1,则指示该请求无超时。

Ⅳ webservice怎么将客户端的文件上传到服务器

在服务端写一个专门针对文件的方法,客户端参数类型可以是Byte/DataHandler等类型,在服务端进行解析参数写入文件即可。最重要的是要设置WebService为可传递附件,默认的WebService仅仅支持一般数据类型的传递。

Ⅵ webService文件上传,该怎么处理

webservice怎么处理移动端的文件上传
代码如下:
static public ArrayOfBase64Binary SendFile(string[] fPaths)
{
FileStream fStream;
ArrayOfBase64Binary lstB = new ArrayOfBase64Binary();
int fCount = fPaths.Length;
if (fCount != 0)
{
for (int i = 0; i < fCount; i++)
{
fStream = new FileStream(fPaths[i], FileMode.Open, FileAccess.Read);
Byte[] b = new Byte[fStream.Length];
fStream.Read(b, 0, b.Length);
lstB.Add(b);
fStream.Flush();
fStream.Close();
}
}
return lstB;
static public void AcceptFile(List<Byte[]> lstB)
{
for (int i = 0; i < lstB.Count; i++)
{
string path = "C:\\Down\\" + i + ".jpg";
FileStream fStream = new FileStream(path, FileMode.Create, FileAccess.Write);
fStream.Write(lstB[i], 0, lstB[i].Length);
fStream.Close();
}
}

Ⅶ java 用webservice实现文件传输。

按byte[]传,和一般方法一样传递

Ⅷ 利用webservice怎么上传文件

1. Web Service 简介
Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
(Web Service 在此不做过多介绍,具体介绍可网络下)
2. WEB Service 开发
2.1. 服务配置
Asp.Net 一般支持上传4MB大小文件,为实现上传超过4MB大小文件,Asp.Net项目需要调整配置(Web.Config)的httpRuntime节点。
<httpRuntime maxRequestLength="40960" executionTimeout="1800" />
maxRequestLength:指定输入流缓冲阈值限制(以 KB 为单位)。此限制可用于防止拒绝服务攻击;例如,因用户向服务器发送大型文件而导致的拒绝服务攻击。
默认值为 4096 (4 MB)。
executionTimeout: 指定在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。默认值110秒。
2.2. 服务开发
本人采用接收字节的方式开发Web Service,提供是创建还是累加参数,根据参数将文件字节写入文件中。示例代码如下:

3. WinForm 程序开发
WinForm是·Net开发平台中对Windows Form的一种称谓。新增WinForm程序项目,添加文件上传服务引用。

3.1. Winform 程序实现效果
程序界面简单设计为:选择文件按钮,选择文件列表,上传文件按钮、上传信息及上传进度。

Ⅸ 用java实现文件的上传与下载

1.下载简单,无非是把服务器上的文件或者数据库中的BLob(或其他二进制型),用流读出来,然后写到客户端即可,要注意 ContentType。

2.上传,可以用Apache Commons Upload等开源工具,或者自己写:
form要用enctype="multipart/form-data"
然后服务器端也是用IO把客户端提交的文件流读入,然后写到服务器的文件系统或者数据库里。不同的数据库对Lob字段操作可能有所不同,建议用Hibernate,JPA等成熟的ORM框架,可以不考虑数据库细节。

热点内容
a星算法视频 发布:2025-01-22 07:55:01 浏览:878
快手安卓怎么直播 发布:2025-01-22 07:54:58 浏览:937
买服务器搭建vpn 发布:2025-01-22 07:53:21 浏览:807
路由器忘记密码如何解 发布:2025-01-22 07:38:47 浏览:153
5分钟视频编译 发布:2025-01-22 07:36:33 浏览:772
asp执行存储过程 发布:2025-01-22 07:35:55 浏览:126
镇政府搭建服务器 发布:2025-01-22 07:32:13 浏览:1000
安卓系统可以查去过哪里吗 发布:2025-01-22 07:25:05 浏览:27
三星手机怎么设置热点密码 发布:2025-01-22 07:20:11 浏览:38
Ip呼叫服务器 发布:2025-01-22 07:19:32 浏览:633