Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    34

    Errore 404 in script ridimensionamento

    Ciao a tutti, premetto che questo non è il mio terreno(solitamente lavoro in php) quindi sono proprio asciutto di asp.net.
    Ho dovuto fare uno script che mi ridimensiona le foto, il problema è che in locale funziona, appena l'ho messo online mi da l'errore 404..praticamente non mi trova la pagina!
    metto lo script sperando che qualcuno mi sappia risolvere il problema
    grazie
    <%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" Debug="true" %>
    <% @Import Namespace="System.Drawing" %>
    <% @Import Namespace="System" %>
    <% @Import Namespace="System.Collections" %>
    <% @Import Namespace="System.ComponentModel" %>
    <% @Import Namespace="System.Data" %>
    <% @Import Namespace="System.Web" %>
    <% @Import Namespace="System.Web.SessionState" %>
    <% @Import Namespace="System.Web.UI" %>
    <% @Import Namespace="System.Web.UI.WebControls" %>
    <% @Import Namespace="System.Web.UI.HtmlControls" %>
    <% @Import Namespace="System.IO" %>
    <% @Import Namespace="System.Text" %>
    <% @Import Namespace="System.Data.SqlClient" %>
    <% @Import Namespace="System.Configuration" %>
    <script runat="server">
    protected void Page_Load(object sender, EventArgs e) {

    }
    private void ResizeAndSave_big(Stream imgStr,int Width, string FileName) {
    System.Drawing.Image bmpStream=System.Drawing.Image.FromStream(imgStr);
    Double altezza;
    Double larghezza;
    larghezza = 0;
    altezza=0;
    if (Convert.ToDouble(bmpStream.Width)<Convert.ToDoubl e(bmpStream.Height)) {

    altezza = Convert.ToDouble(Width);
    larghezza = (Convert.ToDouble(bmpStream.Width) * Width ) / Convert.ToDouble(bmpStream.Height);
    }
    if (Convert.ToDouble(bmpStream.Width)>=Convert.ToDoub le(bmpStream.Height)) {
    larghezza= Convert.ToDouble(Width);
    altezza = (Convert.ToDouble(bmpStream.Height) * Width) / Convert.ToDouble(bmpStream.Width);
    }
    Bitmap img=new Bitmap(bmpStream,new Size(Convert.ToInt32(larghezza), Convert.ToInt32(altezza) ));
    img.Save(FileName,System.Drawing.Imaging.ImageForm at.Jpeg);
    }
    private void ResizeAndSave_thumb(Stream imgStr,int Width, string FileName) {
    System.Drawing.Image bmpStream=System.Drawing.Image.FromStream(imgStr);
    Double altezza;
    altezza = (Convert.ToDouble(bmpStream.Height) * Width) / Convert.ToDouble(bmpStream.Width);

    //creo un nuovo bitmap ridimensionandolo
    Bitmap img=new Bitmap(bmpStream,new Size(Width, Convert.ToInt32(altezza)));

    //salvo l'immagine ridimensionata img.Save(FileName,System.Drawing.Imaging.ImageForm at.Jpeg);
    }
    private void CaricaClick(object sender, System.EventArgs e) {
    //controllo che sia un jpg
    if (file1.PostedFile.ContentType=="image/jpeg" || file1.PostedFile.ContentType=="image/pjpeg") {
    String nomefile;
    nomefile = Request.QueryString["id"] + ".jpg";

    //pass lo stream del file uplodato
    Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory + "/public//big"; ResizeAndSave_big(file1.PostedFile.InputStream,Con vert.ToInt32(txtlarghezza.Value),nomefile.ToString ());
    Environment.CurrentDirectory=AppDomain.CurrentDoma in.BaseDirectory + "/public//thumbs";
    ResizeAndSave_thumb(file1.PostedFile.InputStream,1 57,nomefile.ToString());
    Response.Redirect("carica_foto.aspx?msg=ok");
    } }
    </script>
    <HTML>
    <HEAD>
    <title>Ridimensione immagini</title>
    </HEAD>
    <body style="background-color:#f0f0f0; font-family:Arial, Helvetica, sans-serif; font-size:12px">
    <form id="Form1" method="post" runat="server" enctype="multipart/form-data">
    <table width="427" border="0" cellspacing="1" cellpadding="2" style="background-color:#fff; border:1px solid #CCC; font-size:12px">
    <tr>
    <td width="150" align="right">Carica Immagine</td>
    <td width="264"><input type="file" id="file1" runat="server"></td>
    </tr>
    <tr>
    <td align="right">Larghezza foto grande</td>
    <td><input type="text" id="txtlarghezza" value="300" runat="server">pixel</td>
    </tr>
    <tr>
    <td></td>
    <td>
    <asp:Button ID="btnCarica" runat="server" Text="Carica" OnClick="CaricaClick"></asp:Button></td>
    </tr>
    <tr>
    <td><%// if (Request.QueryString["id"] = "ok") { // MessageBox.Show("Foto inserita!"); //} %></td>
    <td></td>
    </tr>
    </table>
    </form>
    </body>
    </HTML>

  2. #2
    a parte qualche piccola correzione, lo script sembra giusto,
    però vorrei capire quando hai l'errore 404?

    dopo che hai cliccato il pulstante? o subito?

    Questo errore è "risorsa non trovata", quindi sei sicuro di richiedere dal browser la pagina con il percorso giusto?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    34
    Il problema lo fa subito dopo che clicco il pulsante...è strano perchè la pagina non punta a nessun'altra pagina, nel senso che il form richiama la stessa pagina. Poi in locale mi funziona perfettamente, mi fa il ridimensionamento delle foto e poi fa il redirect alla stessa pagina! quindi non capisco quale risorsa non riesce a trovare!
    io ho il sospetto che sia una questione di framework, ma non so come poter aggirare questa cosa!

  4. #4
    a parte che il redirect non serve assolutamente.....

    controlla che il path delle immagini sia giusto.
    Io non userei affatto il metodo che hai usato tu, ma un semplice
    codice:
    string pathFile = Server.MapPath("~/public/big");
    senza andare a toccare Environment.

    alla funzione che deve salvare il file, non passare solo il nome ma tutto il path completo

    vedrai che si risolve

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    34
    Il redirect lo faccio solo perchè mi serve la variabile get.

    per il resto ho provato come mi hai detto
    ho messo al posto di
    codice:
    Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory + "/public//big";
    ho messo
    codice:
    string pathFile = Server.MapPath("~/public/big");
    e al posto di

    codice:
    Environment.CurrentDirectory=AppDomain.CurrentDomain.BaseDirectory + "/public//thumbs";
    ho messo
    codice:
    string pathFile = Server.MapPath("~/public/thumbs");
    adesso mi da direttamente l'errore 404 senza neanche farmi vedere il form!

  6. #6
    questo errore ti dice chiaramente che la o le cartelle non esistono,
    poiché Server.MapPath prevede che esistano, metre prima facevi solo una concatenazione di stringhe e l'errore lo avevi solo al momento di salvare il file.

    controlla, vedrai che sotto /public/ non hai le cartelle che vorresti usare

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    34
    sotto public ci sono le 2 cartelle, ci sono anche immagini all'interno perché nel mentre le ho inserite io quelle che mi servivano...
    nei dettagli dell'errore mi da questo:

    Module IIS Web Core
    Notification MapRequestHandler
    Handler StaticFile
    Error Code 0x80070002
    Requested URL http://miosito.com:80/mycustompage.h...rica_foto.aspx
    Physical Path \\WAGNER\wwwroot$\7ec7b3e25.hostnd\htdocs\www\mycu stompage.htm
    Logon Method Anonymous
    Logon User Anonymous

  8. #8
    allora controlla i permessi.

    o fai un po di trace per capire dove sta il problema.
    Prova ad usare il metodo DirectoryExist, piuttosto che la classe DirectoryInfo per capire qualcosa in più

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.