PDA

View Full Version : Send File



dalaho
دوشنبه 19 دی 1384, 08:02 صبح
سلام من می خواهم از کامپیوتر خودم به یک پوشه در روی سرور فایل ارسال کنم
فایلهای ارسالی معمولآ متن و یا عکس هستند
اگر دوستان کمک کنند خوشحال می شوم

اَرژنگ
دوشنبه 19 دی 1384, 08:10 صبح
احتیاج دارید که یک فلدر به نام uploads
داشته باشید که اجازه write داشته باشد.



<%@ Page Language="C#" %>
<%@ import Namespace="System.Web" %>
<%@ import Namespace="System.IO" %>
<script runat="server">
string FileName;
string FileContent;
string FileSize;
string UploadedMsg;
void Page_Load(object sender, EventArgs e) {
if ( ( Request.Files.Count > 0 ) && ( Request.Files.Get(0).FileName.Length > 0 ) )
{
HttpFileCollection FileColl = Request.Files;
HttpPostedFile PostedFile = FileColl.Get(0);
FileName = PostedFile.FileName;
FileContent = PostedFile.ContentType;
FileSize = PostedFile.ContentLength.ToString();
PostedFile.SaveAs( MapPath( @"uploads\"+Path.GetFileName( FileName ) ));
UploadedMsg = "Upload Complete";
}
else {
UploadedMsg = "";
}
}
</script>
<html>
<head>
</head>
<body>
<form id="UploadFrm" name="UploadFrm" method="post" enctype="multipart/form-data" runat="Server">
File To Upload :
<input id="FileToUpload" type="file" size="40" name="FileToUpload" />
<br />
<input onclick="this.form.SubmitBtn.value='Uploading '" type="submit" value="Upload" name="SubmitBtn" />
<p>
<%= UploadedMsg %>
</p>
File Name: <%= FileName %>
<br />
File Content: <%= FileContent%>
<br />
File Size: <%= FileSize %>bytes
</form>
</body>
</html>

Behrouz_Rad
دوشنبه 19 دی 1384, 09:27 صبح
نیم اسپیس System.Net، دارای کلاسی با نام WebClient است که شامل متدهایی جهت داونلود و آپلود فایل از/به سرور است.
به منظور آپلود یک فایل بر روی سرور، باید از متد UploadFile این کلاس استفاده کنید:


Dim myWebClient As New WebClient()
Dim responseArray As Byte() = myWebClient.UploadFile("http://www.myTargetSite.com/Images/, "POST", "myfile.zip")

اگر خطایی در هنگام آپلود فایل بر روی سرور اتفاق بیفتد، خطایی از نوع WebException رخ خواهد داد.
آرایه responseArray نیز شامل پاسخی است که از جانب سرور برای مشخص ساختن وضعیت آپلود برگشت داده خواهد شد و به شکل زیر قابل بازیابی است:


Response.Write(Encoding.ASCII.GetString(responseAr ray))

موفق باشید.

dalaho
دوشنبه 19 دی 1384, 14:57 عصر
ممنون از راهنمایی شما
اما Response.Write(Encoding.ASCII.GetString(responseAr ray)) جواب نمی دهد
آیا config خاصی می خواهد

Behrouz_Rad
دوشنبه 19 دی 1384, 23:33 عصر
خیر! قاعدتا به درستی باید جواب بده.

dalaho
سه شنبه 20 دی 1384, 08:28 صبح
آقای راد بسیار ممنون از پیگیری و پاسخگویی شما
پیغامی که من می گیرم اینست
The remote server returned an error: (405) Method Not Allowed.

dalaho
سه شنبه 20 دی 1384, 14:00 عصر
ما را نیز در یابید

Behrouz_Rad
پنج شنبه 22 دی 1384, 18:28 عصر
دوست عزیزم!
مسلما این رو می دونید که برای دسترسی به آدرسی خاص بر روی سرور، نیاز به تصدیق هویت دارید!
مراحل زیر را گام به گام انجام دهید یا از ادمین بخواهید که این کار را برای شما انجام دهد.
1) به پوشه ای که قصد ارسال فایل ها به درون آن را دارید، دسترسی کامل (Full Permission) دهید. (تب Sharing and Security)
2) مطمئن شوید که دایرکتوری شما در IIS دسترسی Write Permission را داراست.
3) اطلاعات هویتی خود را با استفاده از کلاس NetworkCredential، به کلاس WebClient پاس دهید.


Dim myWebClient As New WebClient()
myWebClient.Credentials = new NetworkCredential("user", "password")
Dim responseArray As Byte() = myWebClient.UploadFile("http://www.myTargetSite.com/Images/, "PUT", "myfile.zip")

توضیحات:
1) در کد فوق، حتما باید پس از ذکر نام دایرکتوری مقصد، یک کارکتر "اسلش" قرار گیرد.
2) نوع Verb را به "PUT" تغییر دهید. (ممکن است سرور با ورب POST به صورت Remote مشکل داشته باشد.
3) مطمئن شوید که در دایرکتوری مقصد، فایلی با همان نام فایل آپلودی وجود نداشته باشد!

موفق باشید.

dalaho
یک شنبه 25 دی 1384, 09:07 صبح
شرمنده که خیلی سوال پرسیدم

کد های من به اینصورت است و همه config ها را انجام داده ام


try
{

WebClient myWebClient = new WebClient();
string uriString = "http://192.168.1.89/images/";
string fileName = "c:\\test.zip";
myWebClient.Credentials=new NetworkCredential("username", "password");
byte[] responseArray = myWebClient.UploadFile(uriString,"PUT",fileName);
}
catch(Exception exp){
Response.Write(exp.Message);



IIS پسورد ندارد

و با این error مواجه می شوم
The remote server returned an error: (403) Forbidden.

اَرژنگ
یک شنبه 25 دی 1384, 15:39 عصر
یک سوال،
روش آپلود کردن فایل به سرور مشکلتان را حل نمیکنه؟

Behrouz_Rad
یک شنبه 25 دی 1384, 19:14 عصر
بر روی Permission ها بیشتر دقت داشته باشید!

dalaho
دوشنبه 26 دی 1384, 06:54 صبح
مهندس جان فولدر من share و Permission آن Full control است
اما باز هم مشکل دارم .در ضمن Folder root اجازه write دارد .

اَرژنگ
دوشنبه 26 دی 1384, 07:46 صبح
مهندس جان فولدر من share و Permission آن Full control است
اما باز هم مشکل دارم .در ضمن Folder root اجازه write دارد .
احتمال اینکه جواب سوال ما را بدید چند درصد است؟

Behrouz_Rad
دوشنبه 26 دی 1384, 08:44 صبح
مهندس جان فولدر من share و Permission آن Full control است
اما باز هم مشکل دارم .در ضمن Folder root اجازه write دارد .
متاسفم!
چیز دیگه ای به ذهنم نمی رسه...
خودتون می تونید در مورد این متد در Google جستجو بفرمایید تا ببینید که هر آنچه بنده به شما گفتم صحیح بود.
موفق باشید

dalaho
دوشنبه 26 دی 1384, 11:01 صبح
ممنون از راهنمایی شما دوستان گرامی
ارژنگ جان شرمنده
باز هم اگه چیزی به ذهن شما رسید ممنون میشم
در ضمن upload هم مشکل را حل میکنه