當前位置:首頁 » 文件管理 » 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框架,可以不考慮資料庫細節。

熱點內容
安卓數據線怎麼接藍牙 發布:2025-01-22 12:07:29 瀏覽:229
扣扣賬號多少次密碼不正確會被封 發布:2025-01-22 12:07:19 瀏覽:400
python是32位還是64位 發布:2025-01-22 11:51:41 瀏覽:894
鈴聲多多緩存文件夾 發布:2025-01-22 11:51:39 瀏覽:724
java按鍵精靈 發布:2025-01-22 11:49:31 瀏覽:81
python配色 發布:2025-01-22 11:46:40 瀏覽:613
安卓如何使用屏幕錄制 發布:2025-01-22 11:46:36 瀏覽:777
phpencoding 發布:2025-01-22 11:46:35 瀏覽:257
安卓235玩什麼 發布:2025-01-22 11:37:40 瀏覽:217
c語言計算個人所得稅 發布:2025-01-22 11:28:49 瀏覽:735