#asp-classic
#asp-classic
Вопрос:
Я загружаю изображение.При загрузке изображений я сохраняю имя изображения и ссылку для этого файла в одном текстовом файле. например, 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 amp; "<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
он отображает все изображения, но для всех изображений ссылка одинакова. он читает непосредственно последнюю ссылку из текстового файла….В чем проблема с моим кодом?
Ответ №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 amp; "<a href="""amp;trim(arry(1))amp;"""><img src="""amp;trim(arry(0))amp;""" /></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") amp;amp; !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);
}
}
}
}
}
}