当前位置: 代码迷 >> ASP.NET >> MVC上传文件解决办法
  详细解决方案

MVC上传文件解决办法

热度:3957   发布时间:2013-02-25 00:00:00.0
MVC上传文件
现在的问题是:我希望能将文件上传到一台IP为10.101.10.1的服务器上,怎么写后台代码?

  /// <summary>
  /// 上传文件
  /// </summary>
  /// <param name="path">文件上传到的路径</param>
  private void uploadFile(string path, out List<ElectronicAssistantModel> ElectronicAssistantList)
  {
  ElectronicAssistantList = new List<ElectronicAssistantModel>();
  foreach (string upload in Request.Files)
  {
  if (!Request.Files[upload].HasFile()) continue;

  if (!Directory.Exists(path))
  {
  Directory.CreateDirectory(path);
  }
  string filename = Path.GetFileName(Request.Files[upload].FileName);

  Request.Files[upload].SaveAs(Path.Combine(path, filename));
  ElectronicAssistantList.Add(new ElectronicAssistantModel
  {
  DocumentName = filename,
  Url = path
  });
  }
  }

这个上传到本服务器没有问题?但是这个 要上传到网络路径,怎么搞
网上有说在web.config里配置<identity impersonate="true" userName="test" password= "123456"/>
我没成功,期待高手帮忙!!!!

------解决方案--------------------------------------------------------
如果你是跨域上传 要嘛写webservice 要嘛在10.101.10.1弄个上传页面 然后用内框架链接到当前站点 
 第二种我没用过 不知道可行不可行
------解决方案--------------------------------------------------------
C# code
namespace AppGet {    public class PushCommand : CommandBase {        protected override void Execute() {            string uri = string.Format("http://{0}/App/Push/{1}", ConfigurationManager.AppSettings["AppCenter"], Args["-file"]);            Console.WriteLine(uri);            HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;            request.Method = "POST";            using (Stream stream = request.GetRequestStream()) {                var buffer = new byte[4096];                using (FileStream fs = new FileStream(Args["-file"], FileMode.Open)) {                    while (true) {                        int r = fs.Read(buffer, 0, 4096);                        if (r <= 0) { break; }                        stream.Write(buffer, 0, r);                    }                }            }            request.GetResponse();        }        private const string DefaultContentType = "application/octet";    }}
------解决方案--------------------------------------------------------
前面copy的是csharp client upload的代码
下面是mvc中接受文件的代码
C# code
[AcceptVerbs(HttpVerbs.Post)]        public void Push(string id) {            string appName = id.Split('.')[0];            string targetFolder = Path.Combine(Server.MapPath("/Apps"), appName);            if (!Directory.Exists(targetFolder)) {                Directory.CreateDirectory(targetFolder);            }            var buffer = new byte[4096];            using (FileStream fs = new FileStream(Path.Combine(targetFolder, id), FileMode.Create)) {                while (true) {                    int r = Request.InputStream.Read(buffer, 0, 4096);                    if (r <= 0) { break; }                    fs.Write(buffer, 0, r);                }            }        }
------解决方案--------------------------------------------------------
mvc中上传文件
C# code
[AcceptVerbs(HttpVerbs.Post)]        public ContentResult Upload(HttpPostedFileBase FileData, string folder) {            string result = "";            if (null != FileData) {                try {                    if (PathHelper.CheckFileName(FileData.FileName) == false) throw new ApplicationException();                    result = Path.GetFileName(FileData.FileName);//获得文件名                    //string ext = Path.GetExtension(FileData.FileName);//获得文件扩展名                    //string saveName = "uploadfile" + ext;//实际保存文件名                    saveFile(FileData, folder, result);//保存文件                    Logger.Instance.Info(this, "Upload", string.Format("上传文件{0}成功", result));                } catch (Exception ex) {                    result = ex.ToString();                    Logger.Instance.Warn(this, "Upload", "上传文件失败,错误信息为:" + ex.ToString());                }            }            return Content(result);        }        [Authorize]        [RoleFilter(checkRole = "1")]        [NonAction]        private void saveFile(HttpPostedFileBase postedFile, string filepath, string saveName) {            filepath = filepath.Substring(6, filepath.Length - 6);            if (!Directory.Exists(filepath)) {                Directory.CreateDirectory(filepath);            }            try {                postedFile.SaveAs(Path.Combine(filepath, saveName));                Logger.Instance.Info(this, "saveFile", string.Format("保存文件{0}成功", Path.Combine(filepath, saveName)));            } catch (Exception e) {                Logger.Instance.Warn(this, "saveFile", "保存文件失败,错误信息为:" + e.ToString());                throw new ApplicationException(e.Message);            }        }
  相关解决方案