2013-04-12 3 views
5

Ich benutze derzeit Kendo UI zum Hochladen von Dateien in eine DB mit MVC3 und Razor und Entity Framework. Ich habe es in mehreren Bereichen meiner Website gut funktioniert, außer wenn ich es auf das Zulassen eines einzigen Uploads beschränken muss. Ich habe mehrere auf false festgelegt, was mehrere Auswahlmöglichkeiten verbieten muss, aber der Benutzer darf trotzdem beliebig oft auf die Auswahlschaltfläche klicken, um Dateien hinzuzufügen, wodurch die Anforderungen für dieses Feld in der Datenbank verletzt werden.Wie beschränke ich Kendo UI Web-Upload Um nur einen einzigen Upload zu ermöglichen?

Ich habe einige Vorschläge ausprobiert, die ich auf ihrer Website gefunden habe, aber sie beziehen sich auf die aktuell ausgewählten Elemente in der aktuellen Anfrage, nicht auf die gesamte Upload-Liste (siehe Bild unten).

<script type="text/javascript"> 
    function singleFile(e) { 
    var files = e.files; 
    if (e.files.length > 1) { 
     alert('Only one file may be uploaded, cancelling operation...'); 
     e.preventDefault(); 
    } 
    } 
</script> 
@(Html.Kendo().Upload() 
    .Name("resumeAttachments") 
    .Multiple(false) 
    .Async(async => async 
     .Save("ResumeSave", "File") 
) 
    .Events(c => c 
     .Upload("resumeOnUpload") 
) 
    .Events(c => c 
     .Success("resumeOnSuccess") 
) 
    .Events(c => c 
     .Complete("singleFile") 
) 
) 

File list - Allowed up upload multiple files, singularly

+0

Vielleicht war das anders, aber jetzt (v2016.3.1028) wird bei der Verwendung von 'multiple: false' zusätzlich zur Aktion add die Aktion remove aufgerufen - das Steuerelement bereinigt zuvor ausgewählte Dateien. Wenn Ihre Anforderung jedoch darin besteht, dass sie ihre anfänglich hochgeladene Datei nicht ändern können, würde Ihre akzeptierte Lösung oder Ihre nicht-asynchrone + nicht-multiple Konfiguration funktionieren. – mlhDev

Antwort

3

Nach ein wenig über das Wochenende des Denkens (und ein langes Wochenende Urlaub zu entspannen), traf es mich ... die Singlefile-Funktion auf die folgende Änderung wird deaktivieren das Steuerelement nach dem Hochladen der Datei.

function singleFile(e) { 
    var upload = $("#resumeAttachments").data("kendoUpload"); 

    // disables the upload after upload 
    upload.disable(); 
} 
0

Auch das Hinzufügen:

var dropzone = $(".k-dropzone").addClass("hide"); 

zum Singlefile() Funktion wird die Auswahltaste nach dem Upload verbergen abgeschlossen ist, der sehr realen Eindruck, dass Sie nicht mehr hochladen, da:

.hide { 
    display: none; } 

ist in Ihrem css irgendwo definiert.

5

Nachdem mir die Anforderung gegeben wurde, mehrere Uploads zu verhindern, bin ich über diese Seite gestolpert.
"mehrere" auf FALSE eingestellt funktioniert gut, wenn es richtig gemacht wird.

(Während Sie die Kendo Razor-Syntax verwenden können, bemerken, wenn Sie die Seite Quelle anzuzeigen, die die .Kendo() zu .kendoUpload wird tatsächlich umgesetzt

So ziehe ich diese Syntax in Javascript (nach dem @using):

@using Kendo.Mvc.UI; 

<script type="text/javascript"> 

$(document).ready(function() { 
    $("#files").kendoUpload({"multiple":false, 
     async: { 
      saveUrl: '@Url.Action("Save", "Upload", new { typeOfUploadedFile= @Model.DocName.ToString(), @proposalNo = @Model.ProposalNo.ToString(), area = ""})', 
      removeUrl: '@Url.Action("Remove", "Upload")', 
      autoUpload: true 
     } 
    }); 
}); 

</script> 
+0

Dieser Code funktioniert. Wer hat sich entschieden vorbei zu fahren und runter zu fahren? VIELEN DANK! –

+0

eigentlich ist das nicht wie mehrfach: false funktioniert. von kendo ui Website: "Diese Option beschränkt nicht die Gesamtzahl der hochgeladenen Dateien in einer asynchronen Konfiguration." – pootzko

+0

Leider bin ich nicht in diesem Vertrag mit der Kendo-Umgebung, um deine Antwort zu bestätigen oder abzulehnen (um der stackoverflow-Community zu helfen). Ich erinnere mich nur daran, dass es funktionierte und eine QS-Genehmigung für den Prozess erhalten hat, ich kann es derzeit noch nicht verifizieren. thx –

-1

Sie müssen multiple Eigenschaft von Kendo upload Sollwert false;
zum Beispiel @(Html.Kendo().Upload().Multiple(false))

Verwandte Themen