【问题标题】:FileUpload file cleared after uploading it with ftpFileUpload 文件用 ftp 上传后清除
【发布时间】:2012-01-26 18:30:15
【问题描述】:

在使用 ftp 上传文件后,我无法处理上传的文件。

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

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

FileUpload test = new FileUpload();
test = 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 != "")
      {

有人有解决办法吗?

【问题讨论】:

    标签: c# asp.net file-upload ftp


    【解决方案1】:

    看来 FileContent 属性是一个 Stream 类实例,你应该在第二次阅读之前将它搜索到开头,即

    xsdUploaded.FileContent.Seek(0, SeekOrigin.Begin);
    XmlReader reader = XmlReader.Create(xsdUploaded.FileContent);
    

    我不确定,希望这会有所帮助。

    最好的问候。

    【讨论】:

    • 我用 xsdUploaded.FileContent.Lenght 检查了文件的长度,返回值为 0,但我会试试看
    猜你喜欢
    • 2011-12-06
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2018-01-31
    相关资源
    最近更新 更多