ASP.NET Uploaded File

后端 未结 4 1588
甜味超标
甜味超标 2021-01-15 19:55

I have an ASP.NET web application that uses jQuery on client side. On one of the web forms I have a bunch of controls to fill, and an upload control. User can run upload whi

相关标签:
4条回答
  • 2021-01-15 20:43

    I fail to see the difference between the 2 options: what do you mean by caching the file? Isn't it the same as saving to a temp folder?

    AFAIK, most sites will not start uploading until the entire form is filled up (what if your user cancels, or browses away?). They then display an interim progress bar ("please wait while we're analyzing your data...").

    As a general design rule, receiving partial data at any point in time may lead to inconstant data later. If you must do it in steps, change your form to a wizard.

    0 讨论(0)
  • 2021-01-15 20:50

    Like other people mentioned - you can simply upload it. You can do it in many ways:

    1. Upload the files in a temporary folder, and when they finally say save or complete - you can move the file from that temp folder to the other folder where you'd usually keep regular files.
    2. One more thing that you can do, whenever the user clicks on upload button for temporary files, is that you can check you temp folder and clear other files which have stayed there for more than 1-2 days/weeks so that way you know for sure you are not wasting space.

    Perhaps, you can also have a timer on your website that regularly cleans up this folder. I'd say this is more efficient and you don't have to wait for users to come in and click on upload button to clean up your space.

    0 讨论(0)
  • 2021-01-15 20:58

    How about:

    3: Store it in the database but marked as in an incomplete state

    This could be a separate table, or the same table with a status column.

    0 讨论(0)
  • 2021-01-15 21:00

    I think the most appropriate solution will be storing uploaded file in cache. Here is the code

        var fileKey = Guid.NewGuid();
        var fileStream = new Byte[Request.Files[0].ContentLength];
        Request.Files[0].InputStream.Read(fileStream, 0, Request.Files[0].ContentLength);
        Cache[fileKey.ToString()] = fileStream;
    

    The fileKey GUID can be stored in ViewState, or sent as the response to client. Later, when whole form will be saved, cached file can be retrieved and stored into database with other data. The good thing about this method is that if user navigates from the page cached file will expire, thus avoiding resource flooding. We can set expiration time using

    Cache.Add(fileKey, fileStream, null, DateTime.UtcNow.AddMinutes(10), Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
    

    function.

    0 讨论(0)
提交回复
热议问题