Несколько загрузок файлов с ASP.NET MVC - PullRequest
0 голосов
/ 25 января 2011

Привет,

Я реализовал этот плагин от Стива Сандерса от 2008 года. В моем решении у меня есть 3 кнопки для 3 загрузок, и это прекрасно работает.Но разве это не идеальная подгонка, и вопрос в том, является ли thera лучшим решением для меня?

Что мне нужно:

  1. Возможность загружать несколько файлов
  2. Когда срабатывает управляющее действие Должна быть возможность работать с файлами
  3. У конечного пользователя должна быть возможность отменить загруженный файл (насколько я знаю, это невозможно с плагином Steves)
  4. Простота в использовании с ASP.NET MVC
  5. Если для действия Control выполнено сообщение и выдается ошибка проверки, загрузки могут не исчезнуть.

Совет пожалуйста

Ответы [ 4 ]

2 голосов
/ 25 января 2011

Под капотом в плагине Стива Сандерса используется swfUpload, который может поддерживать все, что вам нужно.Однако его плагин, похоже, не раскрывает всех функций swfUpload, таких как отмена загрузки.

Я полностью использую swfUpload на своих сайтах, поддерживающих несколько файлов, отмену загрузок, проверку без отмены других загрузок и т. Д.

Вот демонстрация swfUpload в действии, где вы можете отменить загрузку

2 голосов
/ 25 января 2011

Как насчет использования Uploadify ?Я использовал его раньше, и он прекрасно работает.Но обратите внимание, что для работы ему также необходим Flash-интерфейс ...

Взгляните на этот StackOverflow вопрос - там вы найдете больше информации о том, как использоватьэто с ASP.NET MVC.

1 голос
/ 25 января 2011

Это невозможно с чистым ASP.NET.

Вам нужно принять JQuery uploadify.Это лучшее, что вы можете найти, поверьте мне, я пробовал весь день.

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="MassUpload.aspx.vb" Inherits="Raumplaner_New.MassUpload" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Mass Upload</title>


    <link href="../upload/css/uploadify.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="../scripts/jquery-1.3.2.min.js"></script>
    <script type="text/javascript" src="../scripts/swfobject.js"></script>
    <script type="text/javascript" src="../scripts/jquery.uploadify.v2.1.0.min.js"></script> 

<script type = "text/javascript">

    $(document).ready( function() 
    { 
        $("#<%=FileUpload1.ClientID%>").uploadify({     
        'uploader'       : '../upload/scripts/uploadify.swf',
        'script'         : '../cgi-bin/Upload.ashx',
        'cancelImg'      : '../upload/images/cancel.png',
        'folder'         : '../upload/temp',
        'buttonImg'      : '../upload/images/uploadbutton.png',
        'width'          : '97',
        'height'         : '22',
        'wmode'          : 'transparent',
        'displayData'    : 'speed', 
        'multi'          : true,
        'auto'           : true,
        'simUploadLimit' : 20,  
        'fileDesc'       : 'DWG und SWF - Dateien',
        'fileExt'        : '*.dwg;*.swf',
        'onSelect'       : function(event, queueID, fileObj){ EnableObject('FileUpload1');},
        'onCancel'       : function(event, queueID, fileObj, data){DisableObject('FileUpload1');},
        'onComplete'     : function(event,queueID,fileObj,response,data){alert(fileObj.name);}
        });


        $("#startUploadLink").click( function()
        {           
            $('#<%=FileUpload1.ClientID%>').uploadifyUpload();
            return false;
        });

        $("#clearQueueLink").click( function()
        {
            $("#<%=FileUpload1.ClientID%>").uploadifyClearQueue();                          
            return false;           
        }); 

    });
</script> 


</head>
<body style='background:black;'>
<div id='main'>
        <form id="form1" runat="server">
            <br/>
            <div class="demo">

                <asp:FileUpload ID="FileUpload1" runat="server" />
                <br />
                <a href="#" id="startUploadLink">Start Upload</a>&nbsp; |&nbsp;
                <a href="#" id="clearQueueLink">Clear</a> 

            </div>

        </form>
</div>
</body>
</html>

А вот upload.ashx <% @ WebHandler Language = "VB" Class = "Загрузить"%>

Imports System
Imports System.Web

Public Class Upload : Implements IHttpHandler

    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        Dim postedFile As HttpPostedFile = context.Request.Files("Filedata")

        Dim savepath As String = ""
        Dim tempPath As String = ""
        tempPath = context.Request("folder")

        'If you prefer to use web.config for folder path, uncomment below:
        'tempPath = System.Configuration.ConfigurationManager.AppSettings("FolderPath")


        savepath = context.Server.MapPath(tempPath)
        Dim filename As String = postedFile.FileName
        If Not System.IO.Directory.Exists(savepath) Then
            System.IO.Directory.CreateDirectory(savepath)
        End If

        postedFile.SaveAs((savepath & "\") + filename)    
        context.Response.Write((tempPath & "/") + filename)
        context.Response.StatusCode = 200
    End Sub

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

End Class
1 голос
/ 25 января 2011

Другой вариант - SlickUpload .

Это не бесплатно, но, безусловно, того стоит, на мой взгляд.Я недавно использовал это в проекте MVC и был чрезвычайно доволен этим.Лучший плагин для загрузки, который я когда-либо использовал +, он поставляется с всевозможными помощниками по валидации.

Он также полностью настраиваемый.

Загрузите пробную версию и посмотрите сами:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...