2010-11-15 3 views
0

Я пишу веб-приложение ASP.NET.Как получить размер файла для загрузки нескольких файлов

Рассчитать общий размер моего PDF-файла, который указан ниже. Что это значит? Когда я загружаю файл 2 КБ, он возвращает размер 2 КБ, что является правильным. Но когда я загружаю 2 файла размером 2 КБ, тогда общий размер, который он возвращает, составляет 2,16 КБ. Это верно? Должен ли он вернуть 4 КБ?

StringReader reader = new StringReader(content); 
MemoryStream ms = new MemoryStream(); 
Document doc = new Document(PageSize.A4, 50, 50, 30, 30); 
HTMLWorker parser = new HTMLWorker(doc); 
PdfWriter.GetInstance(doc, ms); 
doc.Open(); 
try 
{ 
    parser.Parse(reader); 
} 
catch (Exception ex) 
{ 
    Paragraph paragraph = new Paragraph("Error! " + ex.Message); 
    paragraph.SetAlignment("center"); 
    Chunk text = paragraph.Chunks[0] as Chunk; 
    if (text != null) 
    { 
     //text.Font.Color = iTextSharp.text.BaseColor.RED; 
    } 
    doc.Add(paragraph); 
} 
finally 
{ 
    doc.SetMargins(10, 10, 10, 10); 
    doc.Close(); 
} 
Byte[] buffer = ms.GetBuffer(); 
if (buffer != null) 
{ 
    Response.ContentType = "application/pdf"; 
    Response.AppendHeader("content-disposition", "attachment;filename=FileName.pdf"); 
    //Response.AddHeader("content-length", buffer.Length.ToString()); 
    Response.BinaryWrite(buffer); 
} 
+0

Я предполагаю, что вы используете .Net, это приложение ASP.Net или winforms? Что iTextSharp имеет отношение к вашей проблеме? Это потому, что вы загружаете pdf-файлы? – Jla

+0

Я имею в виду во всех pdf-файлах. Я использую веб-приложение asp.net. – Pooja

ответ

0

Похоже, что вы открываете два файла в один и тот же буфер и ожидаете их добавления друг к другу. Вместо этого второй заменяет первый.

Попробуйте все это автономно в простой программе на C#. Если он там не работает, он явно не будет работать на странице ASP. OTOH, если он работает там, но не в ASP, то это проблема ASP, а не проблема с iTextSharp.

PS: Я думал, что doc.close закроет поток, используемый PdfWriter. Глядя на код, он будет по умолчанию (protected boolean closeStream = true; из источника java). Что-то могло называть setCloseStream(false) где-то вдоль линии.

PPS: Укладка двух PDF-файлов в один бинарный поток - это не хорошая идея. Вам нужно написать их в виде отдельных вложений ... после чего вся эта проблема спорна.

Смежные вопросы