當前位置:首頁 » 文件傳輸 » ftp流寫入文件
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

ftp流寫入文件

發布時間: 2022-05-30 19:02:36

Ⅰ java 怎麼寫文件到ftp伺服器

可以用文件流的方式直接寫到伺服器,也可以先在本地生成再調用ftp介面上傳到伺服器

Ⅱ 怎麼向ftp中的txt文件寫入數據

給 txt 加入 寫許可權和讀許可權。 通過客戶端的FTP軟體,右鍵 txt 文件,屬性,加入 寫,讀。 請檢查 文件路徑是否正確!!!

Ⅲ ftp斷點續傳寫不進去

intiBytes=soketData.Receive(buffer,bytesRead,0);

//套接字讀取正確使用方法很多,但是沒有隻帶兩個int類型參數的方法,正確使用:
intiBytes=soketData.Receive(buffer);
//buffer----讀取緩存
//iBytes----實際接收的位元組數。
output.Write(buffer,bytesRead,0);

//文件流寫入方法的解釋是這樣的:
FileStream.Write(byte[]array,intoffset,intcount);
output.Write(buffer,0,bytesRead);
//array----代表要寫入的byte[]數組。
//offset----代表寫入位置的偏移量,你的程序這個位置應該是0。
//count----代表要寫入的二進制數組的長度。

所以應該修改為:

while(true)
{
intiBytes=soketData.Receive(buffer);
output.Write(buffer,0,iBytes);
if(!(iBytes>0))
{
break;
}
}

建議你使用NetworkStream網路流來控制下載。

你的循環也不是很高效,如果網路出現延遲或中斷,直接就退出循環了。應該有允許接收位元組為0的次數限制。

給你寫了段完整的,並不一定完全適合你,你可以根據需要修改。

//將套接字傳入NetworkStream
NetworkStreamnetStream=newNetworkStream(socket);
//設置退出循環標志,首次等待數據。
boolStop=false,first=true;
intErrorTimes=0,MaxErrorTimes=10,BufferSize=1024*1024,ReadSize=0;
byte[]buffer=newbyte[BufferSize];
while(!Stop)
{
//netStream.DataAvailable檢查網路流是否有數據可供讀取
if(netStream.DataAvailable||first)
{
//循環讀取可用數據寫入文件
while(netStream.DataAvailable||first)
{
first=false;
ReadSize=netStream.Read(buffer,0,BufferSize);
output.Write(buffer,0,ReadSize);
}
//有數據到來,清零中斷計數
ErrorTimes=0;
}
else
{
//允許網路中斷計數累加
ErrorTimes++;
}
if(!(ErrorTimes<MaxErrorTimes))
{
//如果網路中斷超過MaxErrorTimes,退出循環。
Stop=true;
}
}

Ⅳ c# FTP上傳文件

C#ftp上傳,參考如下:
///<summary>
///上傳文件
///</summary>/
//<paramname="fileinfo">需要上傳的文件</param>
///<paramname="targetDir">目標路徑</param>
///<paramname="hostname">ftp地址</param>/
//<paramname="username">ftp用戶名</param>/
//<paramname="password">ftp密碼</param>
publicstaticvoidUploadFile(FileInfofileinfo,stringtargetDir,stringhostname,stringusername,stringpassword)
{//1.checktarget
stringtarget;
if(targetDir.Trim()=="")
{return;}
target=Guid.NewGuid().ToString();
//使用臨時文件名
stringURI="FTP://"+hostname+"/"+targetDir+"/"+target;
///WebClientwebcl=newWebClient();
System.Net.FtpWebRequestftp=GetRequest(URI,username,password);
//設置FTP命令設置所要執行的FTP命令,
//ftp.Method=System.Net.WebRequestMethods.Ftp.ListDirectoryDetails;//假設此處為顯示指定路徑下的文件列表
ftp.Method=System.Net.WebRequestMethods.Ftp.UploadFile;
//指定文件傳輸的數據類型
ftp.UseBinary=true;
ftp.UsePassive=true;//告訴ftp文件大小
ftp.ContentLength=fileinfo.Length;
//緩沖大小設置為2KB
constintBufferSize=2048;
byte[]content=newbyte[BufferSize-1+1];
intdataRead;//打開一個文件流(System.IO.FileStream)去讀上傳的文件
using(FileStreamfs=fileinfo.OpenRead())
{
try{//把上傳的文件寫入流
using(Streamrs=ftp.GetRequestStream())
{do
{//每次讀文件流的2KB
dataRead=fs.Read(content,0,BufferSize);rs.Write(content,0,dataRead);}
while(!(dataRead<BufferSize));rs.Close();}}
catch(Exceptionex){}finally{fs.Close();}}
ftp=null;//設置FTP命令
ftp=GetRequest(URI,username,password);
ftp.Method=System.Net.WebRequestMethods.Ftp.Rename;//改名
ftp.RenameTo=fileinfo.Name;try{ftp.GetResponse();}
catch(Exceptionex)
{
ftp=GetRequest(URI,username,password);ftp.Method=System.Net.WebRequestMethods.Ftp.DeleteFile;//刪除
ftp.GetResponse();throwex;}finally
{
//fileinfo.Delete();}//可以記錄一個日誌"上傳"+fileinfo.FullName+"上傳到"+"FTP://"+hostname+"/"+targetDir+"/"+fileinfo.Name+"成功.");
ftp=null;
#region
/******FtpWebResponse*****///FtpWebResponseftpWebResponse=(FtpWebResponse)ftp.GetResponse();
#endregion
}
///<summary>
///下載文件
///</summary>
///<paramname="localDir">下載至本地路徑</param>
///<paramname="FtpDir">ftp目標文件路徑</param>
///<paramname="FtpFile">從ftp要下載的文件名</param>
///<paramname="hostname">ftp地址即IP</param>
///<paramname="username">ftp用戶名</param>
///<paramname="password">ftp密碼</param>
publicstaticvoidDownloadFile(stringlocalDir,stringFtpDir,stringFtpFile,stringhostname,stringusername,stringpassword)
{
stringURI="FTP://"+hostname+"/"+FtpDir+"/"+FtpFile;
stringtmpname=Guid.NewGuid().ToString();
stringlocalfile=localDir+@""+tmpname;

System.Net.FtpWebRequestftp=GetRequest(URI,username,password);
ftp.Method=System.Net.WebRequestMethods.Ftp.DownloadFile;
ftp.UseBinary=true;
ftp.UsePassive=false;

using(FtpWebResponseresponse=(FtpWebResponse)ftp.GetResponse())
{
using(StreamresponseStream=response.GetResponseStream())
{
//looptoread&writetofile
using(FileStreamfs=newFileStream(localfile,FileMode.CreateNew))
{
try
{
byte[]buffer=newbyte[2048];
intread=0;
do
{
read=responseStream.Read(buffer,0,buffer.Length);
fs.Write(buffer,0,read);
}while(!(read==0));
responseStream.Close();
fs.Flush();
fs.Close();
}
catch(Exception)
{
//
fs.Close();
//deletetargetfileasit'sincomplete
File.Delete(localfile);
throw;
}
}

responseStream.Close();
}

response.Close();
}try
{
File.Delete(localDir+@""+FtpFile);
File.Move(localfile,localDir+@""+FtpFile);


ftp=null;
ftp=GetRequest(URI,username,password);
ftp.Method=System.Net.WebRequestMethods.Ftp.DeleteFile;
ftp.GetResponse();

}
catch(Exceptionex)
{
File.Delete(localfile);
throwex;
}

//記錄日誌"從"+URI.ToString()+"下載到"+localDir+@""+FtpFile+"成功.");
ftp=null;
}

///<summary>
///搜索遠程文件
///</summary>
///<paramname="targetDir"></param>
///<paramname="hostname"></param>
///<paramname="username"></param>
///<paramname="password"></param>
///<paramname="SearchPattern"></param>
///<returns></returns>
publicstaticList<string>ListDirectory(stringtargetDir,stringhostname,stringusername,stringpassword,stringSearchPattern)
{
List<string>result=newList<string>();
try
{
stringURI="FTP://"+hostname+"/"+targetDir+"/"+SearchPattern;

System.Net.FtpWebRequestftp=GetRequest(URI,username,password);
ftp.Method=System.Net.WebRequestMethods.Ftp.ListDirectory;
ftp.UsePassive=true;
ftp.UseBinary=true;


stringstr=GetStringResponse(ftp);
str=str.Replace(" "," ").TrimEnd(' ');
str=str.Replace(" "," ");
if(str!=string.Empty)
result.AddRange(str.Split(' '));

returnresult;
}
catch{}
returnnull;
}

(FtpWebRequestftp)
{
//Gettheresult,streamingtoastring
stringresult="";
using(FtpWebResponseresponse=(FtpWebResponse)ftp.GetResponse())
{
longsize=response.ContentLength;
using(Streamdatastream=response.GetResponseStream())
{
using(StreamReadersr=newStreamReader(datastream,System.Text.Encoding.Default))
{
result=sr.ReadToEnd();
sr.Close();
}

datastream.Close();
}

response.Close();
}

returnresult;
}
///在ftp伺服器上創建目錄
///</summary>
///<paramname="dirName">創建的目錄名稱</param>
///<paramname="ftpHostIP">ftp地址</param>
///<paramname="username">用戶名</param>
///<paramname="password">密碼</param>
publicvoidMakeDir(stringdirName,stringftpHostIP,stringusername,stringpassword)
{
try
{
stringuri="ftp://"+ftpHostIP+"/"+dirName;
System.Net.FtpWebRequestftp=GetRequest(uri,username,password);
ftp.Method=WebRequestMethods.Ftp.MakeDirectory;

FtpWebResponseresponse=(FtpWebResponse)ftp.GetResponse();
response.Close();
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
}
}
///<summary>
///刪除目錄
///</summary>
///<paramname="dirName">創建的目錄名稱</param>
///<paramname="ftpHostIP">ftp地址</param>
///<paramname="username">用戶名</param>
///<paramname="password">密碼</param>
publicvoiddelDir(stringdirName,stringftpHostIP,stringusername,stringpassword)
{
try
{
stringuri="ftp://"+ftpHostIP+"/"+dirName;
System.Net.FtpWebRequestftp=GetRequest(uri,username,password);
ftp.Method=WebRequestMethods.Ftp.RemoveDirectory;
FtpWebResponseresponse=(FtpWebResponse)ftp.GetResponse();
response.Close();
}
catch(Exceptionex)
{

MessageBox.Show(ex.Message);
}
}
///<summary>
///文件重命名
///</summary>
///<paramname="currentFilename">當前目錄名稱</param>
///<paramname="newFilename">重命名目錄名稱</param>
///<paramname="ftpServerIP">ftp地址</param>
///<paramname="username">用戶名</param>
///<paramname="password">密碼</param>
publicvoidRename(stringcurrentFilename,stringnewFilename,stringftpServerIP,stringusername,stringpassword)
{
try
{

FileInfofileInf=newFileInfo(currentFilename);
stringuri="ftp://"+ftpServerIP+"/"+fileInf.Name;
System.Net.FtpWebRequestftp=GetRequest(uri,username,password);
ftp.Method=WebRequestMethods.Ftp.Rename;

ftp.RenameTo=newFilename;
FtpWebResponseresponse=(FtpWebResponse)ftp.GetResponse();

response.Close();
}
catch(Exceptionex){MessageBox.Show(ex.Message);}}
(stringURI,stringusername,stringpassword)
{
//根據伺服器信息FtpWebRequest創建類的對象
FtpWebRequestresult=(FtpWebRequest)FtpWebRequest.Create(URI);
//提供身份驗證信息
result.Credentials=newSystem.Net.NetworkCredential(username,password);
//設置請求完成之後是否保持到FTP伺服器的控制連接,默認值為true
result.KeepAlive=false;
returnresult;
}

Ⅳ FTP 改文件寫入許可權 FTP文件夾的寫入許可權

通過shell登陸伺服器修改。可能ftp伺服器配置成不允許FTP客戶端修改許可權.

Ⅵ php ftp_get 如何寫入本地文件

ftp_get
僅是下載,如果本地有內容你不想覆蓋的話那就按照時間戳變更下載後的文件名,如果要對文件進行操作
PHP寫入文件需要:打開文件fopen()、寫入數據fwrite()和關閉文件
fclose()
$fp=fopen("../cnbruce.txt",'w');
r
只讀——讀模式,打開文件,從文件頭開始讀
r+
可讀可寫方式打開文件,從文件頭開始讀寫
w
只寫——寫方式打開文件,同時把該文件內容清空,把文件指針指向文件開始處。如果該文件已經存在,將刪除文件已有內容;如果該文件不存在,則建立該文件
w+
可讀可寫方式打開文件,同時把該文件內容清空,把文件指針指向文件開始處。如果該文件不存在,則建立該文件
a
追加
以只寫方式打開文件,把文件指針指向文件末尾處。如果該文件不存在,則建立該文件
a+
追加
以可讀可寫方式打開文件,把文件指針指向文件末尾處。如果該文件不存在,則建立該文件
b
二進制
用於於其他模式進行連接。建議使用該選項,以獲得更大程度的可移植性
注意,如果fopen()函數調用失敗,函數將返回false。否則返回指針數據。所以一般在打開了文件後\讀寫文件前需要檢測下文件是否存在。

Ⅶ 採用ftpclient.storeFile(String, Inputstream)將流寫到伺服器,沒報錯但伺服器上沒有文件,這是怎麼回事

//創建一個FtpClient對象

FTPClient ftpClient = new FTPClient();
//上傳文件 - 讀取本地文件 file:需要上傳的文件地址
FileInputStream inputStream = new FileInputStream(file);
//將流寫到伺服器
ftpclient.storeFile(String, inputStream)
其中String為保存後的文件名,inputStream就是上面獲取的文件流

向上面說的伺服器上沒有文件,
1、可能是你String前面加了地址,但是你的ftp伺服器中沒有這個文件夾導致的,
2、在以有的文件夾下上傳保存,在String前面加/文件夾名,
例:ftpClient.storeFile("/***"+String, inputStream);

(多層文件夾時)有的時候你需要給ftp文件夾設置許可權(右擊文件夾選擇屬性--安全--編輯--永許完全控制),可以試一試。最好只用當前層文件夾,否則每層都要設置
3、
ftpClient.makeDirectory("/文件名");//創建文件夾
ftpClient.changeWorkingDirectory("/文件名");改變保存路徑
這種的最好只用一層文件夾路徑
本人彩筆一枚,大佬請噴。噴完了請把解決思路說一下!!!

Ⅷ 大哥 ,採用ftpclient.storeFile(String, Inputstream)將流寫到伺服器,沒報錯但伺服器上沒有文件,這個問

FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。 PORT(主動)方式的連接過程是:客戶端向伺服器的FTP埠(默認是21)發送連接請 求,伺服器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT 命令告訴伺服器:「我打開了XXXX埠,你過來連接我」。於是伺服器從20埠向客戶端的 XXXX埠發送連接請求,建立一條數據鏈路來傳送數據。 PASV(被動)方式的連接過程是:客戶端向伺服器的FTP埠(默認是21)發送連接請 求,伺服器接受連接,建立一條命令鏈路。當需要傳送數據時,伺服器在命令鏈路上用PASV 命令告訴客戶端:「我打開了XXXX埠,你過來連接我」。於是客戶端向伺服器的XXXX埠 發送連接請求,建立一條數據鏈路來傳送數據。

我當時因為連的是別人的伺服器,那邊換了伺服器就出現這問題,後來我通過FTPClient有一個ftpclient.enterLocalPassiveMode()方法,設置後就沒有這問題了,不知道你是不是跟我一樣

Ⅸ C# 將FTP文件轉移到另一個FTP伺服器上如何實現

C# ftp上傳ftp
/// <summary>
/// 上傳文件
/// </summary> /
// <param name="fileinfo">需要上傳的文件</param>
/// <param name="targetDir">目標路徑</param>
/// <param name="hostname">ftp地址</param> /
// <param name="username">ftp用戶名</param> /
// <param name="password">ftp密碼</param>
public static void UploadFile(FileInfo fileinfo, string targetDir, string hostname, string username, string password)
{ //1. check target
string target;
if (targetDir.Trim() == "")
{ return; }
target = Guid.NewGuid().ToString();
//使用臨時文件名
string URI = "FTP://" + hostname + "/" + targetDir + "/" + target;
///WebClient webcl = new WebClient();
System.Net.FtpWebRequest ftp = GetRequest(URI, username, password);
//設置FTP命令 設置所要執行的FTP命令,
//ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails;//假設此處為顯示指定路徑下的文件列表
ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
//指定文件傳輸的數據類型
ftp.UseBinary = true;
ftp.UsePassive = true; //告訴ftp文件大小
ftp.ContentLength = fileinfo.Length;
//緩沖大小設置為2KB
const int BufferSize = 2048;
byte[] content = new byte[BufferSize - 1 + 1];
int dataRead; //打開一個文件流 (System.IO.FileStream) 去讀上傳的文件
using (FileStream fs = fileinfo.OpenRead())
{
try { //把上傳的文件寫入流
using (Stream rs = ftp.GetRequestStream())
{ do
{ //每次讀文件流的2KB
dataRead = fs.Read(content, 0, BufferSize); rs.Write(content, 0, dataRead); }
while (!(dataRead < BufferSize)); rs.Close(); } }
catch (Exception ex) { } finally { fs.Close(); } }
ftp = null; //設置FTP命令
ftp = GetRequest(URI, username, password);
ftp.Method = System.Net.WebRequestMethods.Ftp.Rename; //改名
ftp.RenameTo = fileinfo.Name; try { ftp.GetResponse(); }
catch (Exception ex)
{
ftp = GetRequest(URI, username, password); ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; //刪除
ftp.GetResponse(); throw ex; } finally
{
//fileinfo.Delete(); } // 可以記錄一個日誌 "上傳" + fileinfo.FullName + "上傳到" + "FTP://" + hostname + "/" + targetDir + "/" + fileinfo.Name + "成功." );
ftp = null;
#region
/***** *FtpWebResponse * ****/ //FtpWebResponse ftpWebResponse = (FtpWebResponse)ftp.GetResponse();
#endregion
}
/// <summary>
/// 下載文件
/// </summary>
/// <param name="localDir">下載至本地路徑</param>
/// <param name="FtpDir">ftp目標文件路徑</param>
/// <param name="FtpFile">從ftp要下載的文件名</param>
/// <param name="hostname">ftp地址即IP</param>
/// <param name="username">ftp用戶名</param>
/// <param name="password">ftp密碼</param>
public static void DownloadFile(string localDir, string FtpDir, string FtpFile, string hostname, string username, string password)
{
string URI = "FTP://" + hostname + "/" + FtpDir + "/" + FtpFile;
string tmpname = Guid.NewGuid().ToString();
string localfile = localDir + @"\" + tmpname;

System.Net.FtpWebRequest ftp = GetRequest(URI, username, password);
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile;
ftp.UseBinary = true;
ftp.UsePassive = false;

using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
//loop to read & write to file
using (FileStream fs = new FileStream(localfile, FileMode.CreateNew))
{
try
{
byte[] buffer = new byte[2048];
int read = 0;
do
{
read = responseStream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, read);
} while (!(read == 0));
responseStream.Close();
fs.Flush();
fs.Close();
}
catch (Exception)
{
//catch error and delete file only partially downloaded
fs.Close();
//delete target file as it's incomplete
File.Delete(localfile);
throw;
}
}

responseStream.Close();
}

response.Close();
}

try
{
File.Delete(localDir + @"\" + FtpFile);
File.Move(localfile, localDir + @"\" + FtpFile);

ftp = null;
ftp = GetRequest(URI, username, password);
ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile;
ftp.GetResponse();

}
catch (Exception ex)
{
File.Delete(localfile);
throw ex;
}

// 記錄日誌 "從" + URI.ToString() + "下載到" + localDir + @"\" + FtpFile + "成功." );
ftp = null;
}

/// <summary>
/// 搜索遠程文件
/// </summary>
/// <param name="targetDir"></param>
/// <param name="hostname"></param>
/// <param name="username"></param>
/// <param name="password"></param>
/// <param name="SearchPattern"></param>
/// <returns></returns>
public static List<string> ListDirectory(string targetDir, string hostname, string username, string password, string SearchPattern)
{
List<string> result = new List<string>();
try
{
string URI = "FTP://" + hostname + "/" + targetDir + "/" + SearchPattern;

System.Net.FtpWebRequest ftp = GetRequest(URI, username, password);
ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectory;
ftp.UsePassive = true;
ftp.UseBinary = true;

string str = GetStringResponse(ftp);
str = str.Replace("\r\n", "\r").TrimEnd('\r');
str = str.Replace("\n", "\r");
if (str != string.Empty)
result.AddRange(str.Split('\r'));

return result;
}
catch { }
return null;
}

private static string GetStringResponse(FtpWebRequest ftp)
{
//Get the result, streaming to a string
string result = "";
using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
{
long size = response.ContentLength;
using (Stream datastream = response.GetResponseStream())
{
using (StreamReader sr = new StreamReader(datastream, System.Text.Encoding.Default))
{
result = sr.ReadToEnd();
sr.Close();
}

datastream.Close();
}

response.Close();
}

return result;
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;

/// <summary>
/// 向Ftp伺服器上傳文件並創建和本地相同的目錄結構
/// 遍歷目錄和子目錄的文件
/// </summary>
/// <param name="file"></param>
private void GetFileSystemInfos(FileSystemInfo file)
{
string getDirecName=file.Name;
if (!ftpIsExistsFile(getDirecName, "192.168.0.172", "Anonymous", "") && file.Name.Equals(FileName))
{
MakeDir(getDirecName, "192.168.0.172", "Anonymous", "");
}
if (!file.Exists) return;
DirectoryInfo dire = file as DirectoryInfo;
if (dire == null) return;
FileSystemInfo[] files = dire.GetFileSystemInfos();

for (int i = 0; i < files.Length; i++)
{
FileInfo fi = files[i] as FileInfo;
if (fi != null)
{
DirectoryInfo DirecObj=fi.Directory;
string DireObjName = DirecObj.Name;
if (FileName.Equals(DireObjName))
{
UploadFile(fi, DireObjName, "192.168.0.172", "Anonymous", "");
}
else
{
Match m = Regex.Match(files[i].FullName, FileName + "+.*" + DireObjName);
//UploadFile(fi, FileName+"/"+DireObjName, "192.168.0.172", "Anonymous", "");
UploadFile(fi, m.ToString(), "192.168.0.172", "Anonymous", "");
}
}
else
{
string[] ArrayStr = files[i].FullName.Split('\\');
string finame=files[i].Name;
Match m=Regex.Match(files[i].FullName,FileName+"+.*"+finame);
//MakeDir(ArrayStr[ArrayStr.Length - 2].ToString() + "/" + finame, "192.168.0.172", "Anonymous", "");
MakeDir(m.ToString(), "192.168.0.172", "Anonymous", "");
GetFileSystemInfos(files[i]);
}
}
}

/// <summary>
/// 判斷ftp伺服器上該目錄是否存在
/// </summary>
/// <param name="dirName"></param>
/// <param name="ftpHostIP"></param>
/// <param name="username"></param>
/// <param name="password"></param>
/// <returns></returns>
private bool ftpIsExistsFile(string dirName, string ftpHostIP, string username, string password)
{
bool flag = true;
try
{
string uri = "ftp://" + ftpHostIP + "/" + dirName;
System.Net.FtpWebRequest ftp = GetRequest(uri, username, password);
ftp.Method = WebRequestMethods.Ftp.ListDirectory;

FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
response.Close();
}
catch (Exception )
{
flag = false;
}
return flag;
}

Ⅹ 為什麼我用FTP傳文件是老說有許可權文件寫入

在ftp伺服器配置中設置你的帳號有寫入、刪除、建立子目錄等相應許可權即可實現寫入。