ورود

View Full Version : سوال: راهنمایی - اپلود تصویر



fatemefa
چهارشنبه 12 آبان 1395, 12:32 عصر
سلام
من بخش اپلود عکس دارم که از کنترلر های مختلف کار اپلود انجام میشه حالا چطور میتونم متوجه شدم الان کدوم کنترلر و کدوم اکشن درخواست اپلود عکس داده که عکس مربوطه توی پوشه مربوطه ذخیره بشه
ممنون میشم راهنمایی بفرمایید.

fatemefa
چهارشنبه 12 آبان 1395, 14:22 عصر
مشکل حل شد از formdata استفاده کردم
و سمت سرور از این دستور استفاده کردم
string action = Request.Params["action"];

fatemefa
پنج شنبه 13 آبان 1395, 17:32 عصر
سلام لطفا اگه کسی می تونه من راهنمایی کنهمن از چند کنترلر مختلف قرار کار آپلود عکس انجام بدم
حالا این کد jquery که نوشتم

$(document).ready(function () {

$('form').submit(function () {


//$("#ImageUrl2").on('change', function () {

var serviceUrl = '/News/UploadAjax';

var file = document.getElementById("ImageUrl2").files[0];
var action = $(this).attr('id');
var formData = new FormData();
formData.append("filename", file);
formData.append("action", action);

alert(action);

$("#progress").html("<img id='upload_loading' src='/Images/loadingAnimation.gif' />");

$.ajax({
type: "POST",
url: serviceUrl,
data: formData,
contentType: false,
processData: false,
dataType: "json",
success: successFunc,
error: errorFunc,
complete: completeFunc,
id: action

});

function successFunc(data) {


if (data[0] == "true") {
$("#newsimg").html("<img id='upload_loading' src='" + data[1] + "' />");
}

});
});




و اینم کد سمت سرور

public ActionResult UploadAjax()
{

// تعریف یک آرایه دو خانه ای برای ارسال داده ها
var result = new string[2];

// دریافت فایل با نامی که توسط ایجکس ارسال شده و قرار دادن در یک اچ تی تی پی پست فایل بیس
HttpPostedFileBase file = Request.Files["filename"];

// دریافت نام فایل
var fileName = Path.GetFileName(file.FileName);

// دریافت پسوند فایل
var strFileExtension = Path.GetExtension(fileName).ToUpper();


// پوشه آپلود فایل
var strRootRelativePath = "~/NewsPhoto/";

// بررسی وجود تصویر در سرور
if (System.IO.File.Exists(Server.MapPath(strRootRelat ivePath) + Path.GetFileName(file.FileName)))
{
// ارسال خطا
result[1] = "تصویری با این نام در سرور وجود دارد";
return Json(result);
}

// تولید یک نام توسط جیو آی دی و الصاق آن با پسوند تصویر
string newFilename = Guid.NewGuid().ToString().Replace("-", string.Empty) + Path.GetExtension(fileName);
//string newFilename = (Session["userid"]).ToString() + Path.GetExtension(fileName);
// الصاق نام + پسوند + مسیر آپلود
newFilename = "/NewsPhoto/" + newFilename;

// مراحل تبدیل آدرس نسبی به آدرس فیزیکی
var physicalPath = Server.MapPath(newFilename);

// ذخیره تصویر
file.SaveAs(physicalPath);

//////////////////////////////////////////////////////////my code

TempData["NewsPhoto"] = newFilename;
// db.SaveChanges();

////////////////// end my code
// قرار دادن ترو در آرابه
result[0] = "true";
// قرار دادن مسیر تصویر در خانه دوم آرابه
result[1] = newFilename;

// ارسال اطلاعات
return Json(result);
}

مشکلی که دارم این که گاهی اوقات اول وارد اکشن اپلود عکس میشه و گاهی اول وارد اکشن create میشه و این کار tempdata خراب میکنه و عکس صحیح به entity مربوطه وصل نمیشه