En iyi yanıtlayıcılar
File upload ile büyük boyutlu dosyaları kayıt yapma sorunu çözüldü

Soru
-
arkadaşlar. ben kullanıcının file upload ile seçtiği dosyayı arkaplanda yine onun bilgisayarında mesala C:\\temp\\ klasörünün altına atmak ordadan da ftp webrequest ile sunucuya yüklemek istiyorum. bunu nasıl yapabilirim bilgisi olan arkadaşlar yardımcı olursanız çok sevinirim.
protected void Button1_Click(object sender, EventArgs e)
{
try
{
FileUpload1.SaveAs("C:\\Windows\\temp\\" + FileUpload1.FileName);
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}kayıt için bu kodu kullanıyorum localde çalışırken kaydediyor ama internet üzerinden çalışmıyor.
- Düzenleyen Adem Kaya 10 Ocak 2013 Perşembe 11:22
Yanıtlar
-
web configdeki <httpRuntime kodunuzu aşağıdaki ile değiştirip deneyin birde,
<httpRuntime maxRequestLength="20240000" executionTimeout="360" requestLengthDiskThreshold="8192" useFullyQualifiedRedirectUrl="true" minFreeThreads="16" minLocalRequestFreeThreads="8" appRequestQueueLimit="50000" enableKernelOutputCache="true" enableVersionHeader="true" requireRootedSaveAsPath="true" enable="true" shutdownTimeout="90" delayNotificationTimeout="5" waitChangeNotification="0" maxWaitChangeNotification="0" enableHeaderChecking="true" sendCacheControlHeader="true" apartmentThreading="false"/>
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 31 Aralık 2012 Pazartesi 07:12
-
sanırım sorunla ilgili bir tesbitim var. sorun şu ki dosya boyutu değil sayfa dosya yüklenirken sürekli bağlanıyor diyor. ancak 5 dk. dan fazla süren upload larda yüklemeyide kapatıyor serverle bağlantıyı da kesiyor. bu yüzden sanırım sayfayı postback yapmadan yükleme yapacak bir yol bulmalıyım.
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 31 Aralık 2012 Pazartesi 07:12
Tüm Yanıtlar
-
Dosya zaten client makinesinde! bir daha neden kaydetmek istiyorsunuz?!!!?!?!?
Ayrıca sunucuda çalışan bir kodun clientteki bir dosyayı kopyalamasını beklemek yanlış olur. Bu işi yapacak kodu yada uygulamayı clientte çalıştırmalısınız. Bu da Silverlight yada Air vs. ile olur.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
-
localde çalışırken kaydediyor ama internet üzerinden çalışmıyor.
-
-
bunu isteme nedenim aslına clientdaki dosyanın fiziksel adresini elde etmek için. yani ftp upload kodlarında yüklenecek dosyanın clientdaki fiziksel adresini istiyor bunu da browserlar vermiyor sadece dosya adını veriyor. Bu yüzden ftp upload yaparken dosya bulunamadı hatası veriyor. bende cliente sabit bir adrese kopyalayabilrsem en azından fiziksel adresi bilirim diye düşünmüştüm.
Benim asıl yapmak istediğim şey fileupload gibi bir araçla büyük boyutlu bir dosyayı -video dosyasını mesela- seçip sunucuda belirlediğim bir klasöre yüklemek. Çünkü host firması web üzerinden yüklemelerde 2 mb. sınırı var. bu yüzden ftp ile yapmam gerektiği söylendi. Aylardır çözemedim bu sorunu arkadaşlar bilen yapan varsa lütfen yardımcı olur musunuz. kafayı yiyecem
-
Sen zaten
FileUpload1.SaveAs(Server.MapPath("videos") +"/"+ FileUpload1.FileName);
şeklinde bir kod yazdığında fileuploaddan seçmiş olduğun videoyu video klasörüne kopyalamış olursun, bunun boyutunun bir sınırlaması olacağını zannetmiyorum mantıken zaten ftp ile yapmış oluyorsun, sen sadece bu kodu yaz videoyu kaydetmek istediğin sayfada,
sayfanı yayınla hostunda, bu kodu yazdığın sayfanın bulunduğu yerde birde video klasörün olsun, yayınladıktan sonra pleskden video klasörüne de yazma izni ver bundan sonrası için artık daha ekstra bir işleme ihtiyacın kalmayacaktır.
Hatta FileUpload ile ne seçersen seç videos klasörüne dosyanın kendi adıyla kaydedecektir.
Burda sınırlaması olabilecek tek şey böyle büyük dosyaları kaydetme, görüntülenme vs. gibi işlemlerde hostunun trafiği ve alanı olabilir
-
çok haklısınız bende bir sıkıntı olmayacağını düşünüyordum ama büyük boyutlu dosyalarda sorun çıkınca host firmasına sordum. bu yanıtı aldım.
Acaba sorun işlem süreleri ile mi alakalı. Yada login olma süresiyle mi alakalı. Peki mesela 1gb lık bir dosyayı yüklemek için
<httpRuntime requestValidationMode="2.0" executionTimeout="2000" maxRequestLength="2000000" appRequestQueueLimit="50000" requireRootedSaveAsPath="true" shutdownTimeout="1800"/> burdaki
ve
<forms name=".ASPXAUTH" loginUrl="Account/login.aspx" protection="All" timeout="266668800" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="Default.aspx" cookieless="UseCookies" enableCrossAppRedirects="false"/>
budaki süreleri mi ayarlamalıyım başka ayar varmı.
-
-
-
dediğiniz her şeyi yaptım 140 mblık bir dosya denedim ama sorun çıktı
bir süre yükledikten sonra
Bağlantı sıfırlandı
Sayfa yüklenirken sunucuyla bağlantı kesildi. hatası verdiişte kodlarım
<%@ Page Title="" Language="C#" MasterPageFile="~/asil.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> <script type="text/javascript"> function ShowProgress() { document.getElementById('<% Response.Write(UpdateProgress1.ClientID); %>').style.display = "inline"; } </script> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1"> <ProgressTemplate> <asp:Image ID="Image1" runat="server" ImageUrl="~/images/indicator.gif" Height="24px" Width="24px" /><asp:Label ID="Label1" runat="server" Text=" İşlem Yapılıyor..."></asp:Label> </ProgressTemplate> </asp:UpdateProgress> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" OnClientClick="ShowProgress()" Text="Button" /> </ContentTemplate> <Triggers> <asp:PostBackTrigger ControlID="Button1" /> </Triggers> </asp:UpdatePanel> </asp:Content>
bu da kodbehind
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class Default3 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { try { FileUpload1.SaveAs(Server.MapPath("dosyalar/") + FileUpload1.FileName); } catch (Exception ex) { Response.Write(ex.Message); } } }
bu da web config
<configuration> <system.web> <customErrors mode="Off" defaultRedirect="hata.aspx"> <error statusCode="403" redirect="engellendi.aspx"/> <error statusCode="404" redirect="bulunamadi.aspx"/> </customErrors> <compilation debug="false" targetFramework="4.0"> <assemblies> <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </assemblies> </compilation> <authentication mode="Forms"> <forms name=".ASPXAUTH" loginUrl="Account/login.aspx" protection="All" timeout="266668800" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="Default.aspx" cookieless="UseCookies" enableCrossAppRedirects="false"/> </authentication> <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15"> <providers> <clear/> <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="profiller" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="10" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/> </providers> </membership> <profile> <providers> <clear/> <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="profiller" applicationName="/"/> </providers> </profile> <roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="AspNetSqlRoleProvider" cookieName=".ASPXROLES" cookiePath="/" cookieTimeout="40000" cookieRequireSSL="false" cookieSlidingExpiration="true" createPersistentCookie="false" cookieProtection="All"> <providers> <clear/> <add connectionStringName="profiller" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider"/> <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider"/> </providers> </roleManager> <webParts> <personalization defaultProvider="webpartprovider"> <providers> <add name="webpartprovider" type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider" connectionStringName="profiller" applicationName="/"/> </providers> </personalization> </webParts> <caching> <sqlCacheDependency enabled="true" pollTime="500"> <databases> <add name="isim" connectionStringName="sqlveritabani"/> </databases> </sqlCacheDependency> </caching> <httpModules/> <httpRuntime requestValidationMode="2.0" executionTimeout="20000" maxRequestLength="2000000" appRequestQueueLimit="50000" requireRootedSaveAsPath="true" shutdownTimeout="180000"/> </system.web> </configuration>
nerde yanlış yapıyorum
-
web configdeki <httpRuntime kodunuzu aşağıdaki ile değiştirip deneyin birde,
<httpRuntime maxRequestLength="20240000" executionTimeout="360" requestLengthDiskThreshold="8192" useFullyQualifiedRedirectUrl="true" minFreeThreads="16" minLocalRequestFreeThreads="8" appRequestQueueLimit="50000" enableKernelOutputCache="true" enableVersionHeader="true" requireRootedSaveAsPath="true" enable="true" shutdownTimeout="90" delayNotificationTimeout="5" waitChangeNotification="0" maxWaitChangeNotification="0" enableHeaderChecking="true" sendCacheControlHeader="true" apartmentThreading="false"/>
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 31 Aralık 2012 Pazartesi 07:12
-
Malesef dediğiniz şekilde yaptım ama olmadı.
20 mb lık bir dosyayı yüklüyor. ama 140 mblık bir dosyayı denedim browser hata verdi
Bağlantı sıfırlandı
Sayfa yüklenirken sunucuyla bağlantı kesildi.
Site geçici olarak açılamıyor ya da çok meşgul olabilir.
Biraz bekleyip yeniden deneyin.
Hiçbir sayfayı açmayı başaramıyorsanız bilgisayarınızın ağ bağlantılarını
gözden geçirin ve internete bağlı olduğunuzdan emin olun.
Bilgisayarınız ya da ağınız güvenlik duvarı ya da vekil sunucu tarafından
korunuyorsa, Firefox uygulamasına internete erişmek için gerekli izinlerin verilmiş olduğundan emin olun. -
-
-
sanırım sorunla ilgili bir tesbitim var. sorun şu ki dosya boyutu değil sayfa dosya yüklenirken sürekli bağlanıyor diyor. ancak 5 dk. dan fazla süren upload larda yüklemeyide kapatıyor serverle bağlantıyı da kesiyor. bu yüzden sanırım sayfayı postback yapmadan yükleme yapacak bir yol bulmalıyım.
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 31 Aralık 2012 Pazartesi 07:12
-
arkadaşlar sorunu çözdüm burdada paylaşmak istedim
Önay beyin tavsiyesi üzerinde silverlight ile file upload işini araştırdım. nette SilverlightFileUploadSrc diye bir uygulama buldum. onu kendi projeme entegre ettim sorunsuz çalışıyor.
istediğim kadar büyük dosyayı yükleyebiliyorum.
-
-