Jag använder CrystalReports för att generera order i pdf format. Det funkar fantastiskt bra. Nu vill jag kunna emaila pdf filen till diverse företag eftersom vissa verkar föredra att få sina order på det viset! Problemet blir att då måste jag skapa pdf filen fysiskt. Sedan när mailet är skickat så ska jag tabort pdf filen och får då att System.IO.IOException Bummer with the access!
Försöker med IO.File.Delete(strFileName)
Ibland är det webläsaren som låser pdf filen och ibland verkar det vara Visual Studio 2005 som låser filen. Några tips på hur man ska göra? Ska jag skapa någon form av funktion som tar bort gamla pdf filer innan användaren skapar och emailar en ny?
Private Sub EmptyTemp()
Dim temp As String = "C:\Inetpub\root\temp\"
Dim files() As String = Directory.GetFiles(temp)
Dim f As String
For Each f In files
Dim filename As String = Path.GetFileName(f)
If File.Exists(filename) = True Then
File.Delete(filename)
End If
Next
End Sub
Den här funktionen gör ju ingenting!? Hur ska jag kunna loopa igenom alla filer i en mapp och ta bort dom??
Jag skulle nog hellre försöka se till att det aldrig skapas någon fil, om det är tillämpligt i ditt fall. Använd ExportToStream på Crystal-rapporten och någon av stream-konstruktorerna på Attachment.
Precis som emisson säger så är din file endast en bytearray som finns i minnet. Så om du skapar en pdf-fil i kod eller om du läser upp den från disken så ser den likadan ut i minnet, så det du vill är att skicka denna bytearray till attachment i ditt mail.
Dim strStream As New System.IO.BinaryReader( crReportDocument.ExportToStream( CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat ) )
' Create the output pdf file
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.BinaryWrite(strStream.ReadBytes(strStream.BaseStream.Length))
Response.Flush()
Response.Close()
Det där ska väl fungera, men hur tusan hämtar jag den här till mitt email attachment nu då?
Tack emission! Mitt problem just nu är att jag inte är så avancerad att jag klarar att ta till mig av MSDN's dokumentation av asp.net än. ASP går bra nu men det hjälper ju inte mig
Jag har för närvarande 3 funktioner. En för när användaren klickar på skicka epost en för att hämta pdf filen och en för att slutligen skicka epostmeddelandet!
onClick_Send
pdfToStream
emailOrder
Just nu fattar jag inte hur jag ska få ihop det. Förut hämtade jag filnamnet och skickade det vidare med:
' Create the PDF order
strFileName = myutils.PdfToStream(Request.QueryString("OrderId"))
' Email the order
myResult = myutils.EmailOrder(Me.txtTo.Text, Me.txtFrom.Text, Me.txtSubject.Text, Me.txtMessage.Text, strFileName)
Istället för måste jag ju bygga ihop filen då? Jag har ju redan skapat en stream men hur ska man sätta ihop det till en fil?
261 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a