【问题标题】:How to read text file in classic asp如何在经典asp中读取文本文件
【发布时间】:2019-06-01 18:27:07
【问题描述】:

我正在上传图片。在上传图片时,我将图片名称和该 iage 的链接保存在一个文本文件中。 像这样, abc.jpeg,http://google.com

现在我想使用经典的 asp 显示所有带有相应链接的图像。

我应该怎么做?

请帮忙。

我使用了这个 asp 代码:

<%
For Each FileName in fold.Files
Dim Fname
Dim strFileName
Dim objFSO
Dim objTextFile
Dim URLString
Dim strReadLineText

Fname= mid(FileName.Path,instrrev(FileName.Path,"\\")+1)
strFileName = "../admin/Links.txt"
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.OpenTextFile(Server.MapPath(strFileName))

URLString=""

Do While Not objTextFile.AtEndOfStream
    strReadLineText = objTextFile.ReadLine
    'response.Write(strReadLineText & "<br>")

    If strReadLineText<>"" then
        If Instr(strReadLineText,",")>0 then
            strReadLineTextArr=split(strReadLineText,",")
            response.Write(strReadLineTextArr(0))
            URLString=strReadLineTextArr(1)
        end if 
    end if
Loop

' Close and release file references

objTextFile.Close

Set objTextFile = Nothing

Set objFSO = Nothing

它显示所有图像,但所有图像的链接都是相同的。它直接从文本文件中读取最后一个链接......我的代码有什么问题?

【问题讨论】:

    标签: asp-classic


    【解决方案1】:

    你可以试试这样的 -

    Dim lineData
    Set fso = Server.CreateObject("Scripting.FileSystemObject") 
    set fs = fso.OpenTextFile(Server.MapPath("imagedata.txt"), 1, true) 
    Do Until fs.AtEndOfStream 
        lineData = fs.ReadLine
        'do some parsing on lineData to get image data
        'output parsed data to screen
        Response.Write lineData
    Loop 
    
    fs.close: set fs = nothing 
    

    【讨论】:

      【解决方案2】:

      您的问题是您分配 URLString 的方式。它以“”开头,当您阅读文件中的每一行时,您会覆盖它的现有值。文件的最后一行将是最后一次覆盖,因此这将是循环结束时 URLString 内部的值。代码示例如下:

      output = ""
      path = server.mappath("../admin/Links.txt")
      set fs = server.createobject("Scripting.FileSystemObject")
      set f = fs.OpenTextFile(path, 1, true) '1 = for reading
      do while not f.AtEndOfStream
          text = trim(f.ReadLine)
          if text <> "" then
              if instr(text,",") > 0 then
                  arry = split(text,",")
                  ' assuming line = filename.jpg, url.com
                  output = output & "<a href="""&trim(arry(1))&"""><img src="""&trim(arry(0))&""" /></a><br />"
              end if 
          end if
      loop
      f.close
      set f = nothing
      set fs = nothing
      

      这会删除任何文本周围的额外空白,并简单地写入一系列图像列表。这样做的一个缺陷是,如果文件名中包含逗号,它将中断。

      【讨论】:

        【解决方案3】:

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.UI;
        using System.Web.UI.WebControls;
        using System.Text;
        // Fajlovi
        using System.IO;
        
        namespace A7
        {
            public partial class redvoznje : System.Web.UI.Page
            {
                class Red {
                    public int Rbr { get; set; }
                    public string Vreme { get; set; }
                }
                protected void Page_Load(object sender, EventArgs e)
                {
                    
                    if (!this.IsPostBack) {
        
                    
                        string[] fajlovi = Directory.GetFiles(Server.MapPath("linije"));
        
                        for (int i = 0; i < fajlovi.Length; i++) { 
                          
                            string ime = Path.GetFileNameWithoutExtension(fajlovi[i]);
        
                          
                            LinijaLista.Items.Add(ime);
                        }
        
                        
                        string trenutnaLinija = LinijaLista.Text;
        
                        using (StreamReader sr =
                            new StreamReader(Server.MapPath("linije" + "/" + trenutnaLinija + ".txt"))) {
                                string linija;
                               
                                while ((linija = sr.ReadLine()) != null) {
                                   
                                    if (linija.StartsWith("SMER")) {
                                        string smer = linija.Substring(5);
                                        SmerLista.Items.Add(smer);
                                    }
                                }
                        }
        
        
                    }
        
        
        
                }
        
                protected void Button1_Click(object sender, EventArgs e)
                {
                 
                    Table1.Rows.Clear();
        
                   
                    string trenutnaLinija = LinijaLista.Text;
                    string smer = SmerLista.Text;
        
                   
                    List<Red> redovi = new List<Red>();
        
                    using (StreamReader sr =
                            new StreamReader(Server.MapPath("linije" + "/" + trenutnaLinija + ".txt")))
                    {
                        string linija;
                        bool stani = false;
                        bool pronadjenaLinija = false;
                        int rbr = -1;
        
                     
                        while ((linija = sr.ReadLine()) != null)
                        {
                            if (linija.StartsWith("SMER:" + smer))
                            {
                                pronadjenaLinija = true;
                            }
        
                            if (pronadjenaLinija)
                            {
                                if (linija.StartsWith("SMER") && !linija.StartsWith("SMER:" + smer))
                                {
                                    stani = true;
                                }
        
                                if (!stani)
                                {
                                    rbr++;
                                    redovi.Add(new Red() { Rbr = rbr, Vreme = linija });
                                }
                            }
                        }
                    }
                    
                    redovi.RemoveAt(0);
        
                   
                    TableRow zaglavlje = new TableRow();
        
                    TableCell kol1 = new TableCell();
                    TableCell kol2 = new TableCell();
        
                    kol1.Text = "Redni broj polaska";
                    kol2.Text = "Vreme polaska";
        
                    zaglavlje.Controls.Add(kol1);
                    zaglavlje.Controls.Add(kol2);
        
                    Table1.Rows.Add(zaglavlje);
        
                    for (int i = 0; i < redovi.Count; i++)
                    {
                        TableRow red = new TableRow();
        
                        TableCell rbrKol = new TableCell();
                        TableCell vremeKol = new TableCell();
        
                        rbrKol.Text = redovi[i].Rbr.ToString();
                        vremeKol.Text = redovi[i].Vreme;
        
                        red.Controls.Add(rbrKol);
                        red.Controls.Add(vremeKol);
        
                        Table1.Rows.Add(red);
                    }
        
        
                    Table1.Visible = true;
        
                }
        
                protected void LinijaLista_SelectedIndexChanged(object sender, EventArgs e)
                {
                        SmerLista.Items.Clear();
        
                       
                        string trenutnaLinija = LinijaLista.Text;
        
                        using (StreamReader sr =
                            new StreamReader(Server.MapPath("linije" + "/" + trenutnaLinija + ".txt")))
                        {
                            string linija;
                         
                            while ((linija = sr.ReadLine()) != null)
                            {
                                
                                if (linija.StartsWith("SMER"))
                                {
        
                                    string smer = linija.Substring(5);
        
                                    SmerLista.Items.Add(smer);
                                }
                            }
                        }
                    
        
        
                }
            }
        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-21
          • 1970-01-01
          • 1970-01-01
          • 2010-10-01
          • 1970-01-01
          • 2015-05-11
          • 1970-01-01
          相关资源
          最近更新 更多