Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ftp上载文件后,文件上载文件已清除_C#_Asp.net_File Upload_Ftp - Fatal编程技术网

C# 使用ftp上载文件后,文件上载文件已清除

C# 使用ftp上载文件后,文件上载文件已清除,c#,asp.net,file-upload,ftp,C#,Asp.net,File Upload,Ftp,用ftp上传文件后,我在处理上传的文件时遇到问题 用户上载的文件包含xml。我必须将此文件保存到磁盘,但我无法将此文件直接写入磁盘,因此我使用ftp保存它。保存后,需要对其进行处理以将其内容保存到数据库中。XmlReader失败,错误为“未检测到根元素”。经过一些调试,我得出结论,文件是空的 我试图复制该文件(其中xsdUpload是用户上载的文件): 但如果这也会复制内存中的文件,我就不是真正的舒尔 ftp上传功能如下: public string uploadXsd(string f

用ftp上传文件后,我在处理上传的文件时遇到问题

用户上载的文件包含xml。我必须将此文件保存到磁盘,但我无法将此文件直接写入磁盘,因此我使用ftp保存它。保存后,需要对其进行处理以将其内容保存到数据库中。XmlReader失败,错误为“未检测到根元素”。经过一些调试,我得出结论,文件是空的

我试图复制该文件(其中xsdUpload是用户上载的文件):

但如果这也会复制内存中的文件,我就不是真正的舒尔

ftp上传功能如下:

    public string uploadXsd(string fileName, FileUpload xsd)
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url + '/' + fileName);

        request.Method = WebRequestMethods.Ftp.UploadFile;

        request.Credentials = new NetworkCredential(username, password);

        StreamReader sourceStream = new StreamReader(xsd.FileContent);
        byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
        sourceStream.Close();
        request.ContentLength = fileContents.Length;

        Stream requestStream = request.GetRequestStream();
        requestStream.Write(fileContents, 0, fileContents.Length);
        requestStream.Close();

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();

        response.Close();
        return url + '/' + fileName;
    }
此函数工作正常。我可以在该文件所在的目录中看到该文件

要处理我使用的文件,请执行以下操作:

 XmlReader reader = XmlReader.Create(xsdUploaded.FileContent);

 while (reader.Read())
 {
      if (reader.Name != "")
      {

有人有解决方案吗?

似乎FileContent属性是一个流类实例,您应该在二读之前找到它,即

xsdUploaded.FileContent.Seek(0, SeekOrigin.Begin);
XmlReader reader = XmlReader.Create(xsdUploaded.FileContent);
我不确定,希望这有帮助


致以最诚挚的问候。

我已经用xsdupload.FileContent.Lenght检查了文件的长度,返回值whas为0,但我会尝试一下
xsdUploaded.FileContent.Seek(0, SeekOrigin.Begin);
XmlReader reader = XmlReader.Create(xsdUploaded.FileContent);