Problema nell'upload multiplo

venerdì 24 giugno 2011 - 12.56
Tag Elenco Tags  C#  |  .NET 4.0

Gemini Profilo | Expert

Ciao a tutti
ho modificato questo esempio per l'upload multiplo di file:
https://github.com/blueimp/jQuery-File-Upload
Capita qualche volta che quando seleziono più foto mi dia un errore quando eseguo il crop dell'immagine(nel file ashx).
Penso che non trovi l'immagine da elaborare.
Può essere che esegua più chiamate asincrone contemporaneamente e non trova il file?
C'è modo che elabori un file quando ha terminato di elaborare il precedente?
Grazie

Gluck74 Profilo | Guru

ho analizzato il codice e fatto un piccolo test. Putroppo oggi sto lavorando da una macchina che non ha nessun tool installato, quindi niente debug e niente analisi delle richieste............

quindi a parte l'utilizzo di un handler che non gestisce le richieste come una pagina aspx o un servizio (quindi inutile il foreach sui postedfile tanto ne riceve uno alla volta),
mi sembra di aver capito che non ci siano problemi nel codice.
Posta quindi il tuo file modificato e vediamo...


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

Gemini Profilo | Expert

ciao
questo è il file ashx
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


classe News:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Crop dell'immagine. E' quì che ricevo l'errore qualche volta. Ho inserito un try per non farlo bloccare:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
grazie

Gluck74 Profilo | Guru

ci sono alcune cose che non mi tornano leggendo il codice, ad esempio tu chiami
>photo.Id_Photo = News.SalvaPhoto(photo);
ma poi nella classe la funzione non ha parametri
>public bool Salva()
> {
> bool result = true;
> News old_news = new News(Id_News, string.Empty);

A parte questo, senza stare a spulciare troppo il codice, è vero che in teoria tu hai lo stream del file e lo puoi mandare ad altre classi e farci quello che vuoi, ma in pratica, visto che hai errore, salva subito il file, poi alle altri classi fai lavorare sul file fisico.
Secondo me così risolvi.

string FileName = uploadedfile.FileName; string FileType = uploadedfile.ContentType; int FileSize = uploadedfile.ContentLength; uploadedfile.SaveAs(.... path fisico ...); ... ... tipoNewsPhoto photo = new tipoNewsPhoto(); photo.ImmagineUpLoad = <path fisico>; //stringa photo.Descrizione = string.Empty; photo.Posizione = "0";

così che la CropImageCenter (o quello che è) lavora su un file che sicuramente c'è

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

Gemini Profilo | Expert

Ciao
ancora un aiuto dato che non conosco molto bene jquery.
La pagina che contiene l'upload multiplo ha anche altri controlli fileupload. Quando seleziono un'immagine per questi controlli viene richiamato automaticamente il codice jquery dell'upload multipolo e l'immagine viene inserita nella gallery.
Come faccio ad evitare questo?

Ho provato in questo modo:
sostituendo $(id_form).fileUploadUI({
con
$(dvGallery).parents(id_form).fileUploadUI({
dove dvGallery è il div che contiene la gallery
e id_form è l'id del form della pagina

$(function () {
var id_form = '#<%= Master.getFormID() %>';
var dvGallery = '#<%= dvGallery.ClientID %>'; $(dvGallery).parents(id_form)
$(dvGallery).parents(id_form).fileUploadUI({
url: '../../Handler/FileUpload.ashx?type=news&id=<%= hdIdNews.Value %>',
method: 'POST',
uploadTable: $('#files'),
downloadTable: $('#files'),
buildUploadRow: function (files, index) {
return $('<tr><td>' + files[index].name + '<\/td>' +
'<td class="file_upload_progress"><div><\/div><\/td>' +
'<td class="file_upload_cancel">' +
'<button class="ui-state-default ui-corner-all button" title="Cancel">' +
'<span class="ui-icon ui-icon-cancel">Cancel<\/span>' +
'<\/button><\/td><\/tr>');
},
buildDownloadRow: function (file) {
var htmlPhoto = "";

if (file.id_photo != "0" && file.id_photo != "" && hdPhotoCaricate.value.indexOf(", " + file.id_photo)==-1) {
htmlPhoto = '<div style="float: left; width: 99%; margin-bottom: 10px;" id="dvPhoto' + file.id_photo + '">' +
...
'</div>';
}

return $(htmlPhoto);
}
});
});

Così continua a darmi lo stesso problema. Richiama l'upload multiplo per qualsiasi controllo fileupload nella pagina.
Grazie


Gluck74 Profilo | Guru

non ti so aiutara così su due piedi.
Dovrei mettermi a spulciare meglio lo script jquery che usi e che non conosco.

Prova a vedere nella documentazione del prodotto.
Ciao

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5