How to upload and retreive PDF files - asp.net

I am doing a project on VB.NET for learning purpose. It's a desktop application with MS SQL server as backend. One of the module is to upload and view PDF documents. I have searched over internet and found that it can be done in two ways, either storing the PDF directly into database or in a directory. I was able to save the document in database but I do not know how to display it within the application.
I am using AxAcroPDF component for display purpose. I came across some websites which said that PDF stored in database cannot be displayed through the AcroPDF but if the files are saved in directory then they can be displayed via file path. If thats the case, I would like to know how to save PDF in directory.
Now, these PDF docs are as per some categories like
Type A will have 4 associated PDF,
Type B will have 5 or 6 associated PDFs.
I don't want to mix up all PDF together in single directory. Is it possible while uploading, a folder can be created dynamically and a PDF associated to the type are saved in that particular folder? So, it will be easier to view PDF of particular type only and not all of the uploaded docs.
But this all will be required if PDF stored in database cannot be viewed by AcroPDF.
I am storing PDF in database as varbinary.

Imports AxAcroPDFLib Imports AcroPDFLib
Public Sub New()
' This call is required by the designer.
InitializeComponent()
AxAcroPDF1.Location.Equals(AxAcroPDF1.LoadFile("C:\path\file.pdf"))
AxAcroPDF1.LoadFile("C:\path\file.pdf")
' Add any initialization after the InitializeComponent() call.
End Sub

Related

Is it possible to upload a file in Symfony2 without referring to entity's or using Doctrine?

I'm building a web application that displays specific data to the customers of my client. The client wants to populate the application with data via a CSV file. So he needs to be able to upload the file to the server, and the application places the CSV data in to the database.
I am using Ddeboer/DataImport bundle and have managed to get it to work with a CSV file already placed on the server. The trick now is to get the CSV file on to the server in the first place.
Because I want the file to be directly sent to the server, and that it won't be associated to any other records held on the database, I feel there is absolutely no need to use Doctrine at all. However, the documentation that I've encountered suggest that you should only upload files to the server via Doctrine/Database. Surely this can't be the case?
Is there a simple way of just uploading the file to a designated folder on the server? No bells or whistles, just a pure file upload in Symfony2.
Of course it is. The cookbook only contains a doctrine based entry but it has a link to the file form type.
http://symfony.com/doc/current/reference/forms/types/file.html

Determining .exe file in time of upload

I have developed File Upload web page in ASP.NET. Now user can rename a .exe file to txt or some other extension and upload the same. I want to restrict that. How I can implement that in ASP.NET?
The only safe way to do this is to get the byte [] from the file that has been posted and examine it to determine if the file is indeed in one of the formats you allow the user to upload. You don't need to save the file, you can just get the byte[] from the HttpPostedFile object.
Other than examining the content (looking for magic numbers, for example) there isn't an infallible way to make sure that the user is not attempting to upload something that you don't allow.

How to display show message to user after Response.close?

In my asp.net web application i have to convert resx file to excelfile and then i should provide an option to download the converted file. I have done the download function using response.Addheader method. Now i wanted to display statics to the user of how many keys are converted from resx file to excel file.
I have placed an label to display no of keys migrated but the code is not exceuted after response.end. Pls help me to get this done
Thanks
Rm
Short answer is that you cannot send some output once the response has closed.
Now to achieve what you want to do, you have to emit statistics along with link to download the actual excel file. For example,
Convert the file and store results into file system. You should use some random key (such as guid) for generating the file name.
Output statistics that you want to show to the user.
In the same output, emit a start-up java-script that would redirect the browser to the url that will download the file generated in step1 - the file name key will useful for creating such URL.
In rare cases where JS doesn't work or re-direct takes more time, The output from #2 should also contain a link that will allow user to download the file manually (the link will be accompanied with some friendly message)

Open File Dialog Asp.Net

I am creating an excel report in vb.net using the office interop. When the report is completed I am saving the excel file on the C drive. The users have asked to save file anywhere they want not just the c drive. Can someone give me some code to popup an opend file dialog in asp.net?
I want the dialog to popup in a saveAs in ASP.NET. I know how to do it in win forms, but I am creating an excel report in asp.net and calling the worksheet objects SaveAs property that excepts a fileName. So right now I just hardcode a file name in there. The users want to choose a file location
I think what you want is actually rather simple.
You can't save a file to the user's computer due to security restrictions (would you want a website saving a file to your computer?)
What you need to do is:
Complete report
Save report file to location on server, IE (.../myWebsite/files/GUID/myReport.rpt)
Display link on next screen pointing to the report file
Doing this the user can right-click and save the file to wherever they want on their computer.
You can clean up these files on whatever schedule you would like.
Assuming you are actually talking about a desktop, winforms app then you can use the built in FileSaveDialog.
Official documentation is here:
http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.aspx
but there are tons of tutorials explaining it out there:
http://www.google.co.uk/search?q=vb.net+savefiledialog
You can server files with the Open / Save dialog by using Response.TransmitFile().
The user is then presented with a save as dialog where they can choose the filename and the location on their computer.
You normally do this inside a HttpHandler. A simple one is described here:
http://blogs.msdn.com/petel/archive/2005/12/01/499189.aspx

Deleting Application Temp File from ASP.Net

I have a WebPage where I am giving the option to to Export the Form data to PDF. I am creating the PDF at run time and store the PDF in a "PDF" folder which is under my application directory. After creating the PDF with the SessionID name I Call following function to show the PDF file in the new browser window:
ResponseHelper.Redirect(Response, "~/PDF/" + Session.SessionID + ".pdf", "_Blank", "");
This PDF contains the private information related to the logged in user. Therefore, I want a way to delete this PDF file once it is shown in the browser to the user. This is because the IIS server allows whole development team to view this folder which is a security risk, and we can't disallow user to view this folder on the server.
Therefore, if I could delete this file as soon as it is loaded in the browser could be a solution of this security risk.
Can anyone suggest some better ways of deleting this file as soon as possbile from the application?
Thanks,
Praveen
what i guess is you are creating PDF file on runtime using Itext and then you save that PDF file in temp directory to show it to user... why don't you use
Response.WriteFile(PDFFILE);
this will write the whole file on the stream without saving it in temp folder.
One way is to write an ashx handler which streams the pdf to the browser, then deletes it when done.
Another, and much better way, is to simply build the PDF in memory (NOT using session) and stream it as soon as it's ready.
UPDATE
I'm doing this with a slightly modified version of iTextSharp. Basically, iTextSharp performed all of it's operations in memory, then saved the file to disk. I changed this to return the memory stream. All the code is already there, it was really just a line or two that had to change.
Then, I used a response.binarywrite to push the stream directly to the browser. viola! no files on disk.
An ashx handler is just like an aspx page, only it has one entry point and doesn't do all of the page processing garbage. It's light weight and communicates back to the browser by response.write calls.

Resources