// 上传文件到服务器 public JsonResult Service() { List <IPostFileData> list = new List <IPostFileData>(); foreach (string key in Request.Files.Keys) { HttpPostedFileBase file = Request.Files[key]; string filename = file.FileName; if (filename.IndexOf(".") < 0) { filename = filename + ".jpg"; } byte[] filebytes = new byte[file.ContentLength]; file.InputStream.Read(filebytes, 0, filebytes.Length); PostFileData data = new PostFileData(); data.FileName = file.FileName; data.Name = key; data.Value = filebytes; list.Add(data); } Log.Info("收到图片{0}张", list.Count); if (list.Count <= 0) { return(Json(FuncResult.FailResult("请上传图片", (int)ApiStatusCode.BAD_REQUEST))); } FileSystemClient client = new FileSystemClient(AppConfig.FileSystem_AppID, AppConfig.FileSystem_AppSecret); var res = client.UploadFile(list.ToArray()); return(Json(res)); }
public void AddFile(Func <Stream> fileFactory, string fieldName, long length, string contentType = "application/octet-stream") { PostFileData item = new PostFileData(); item.FileFactory = fileFactory; item.FieldName = fieldName; item.ContentType = contentType; item.ContentLength = length; this._files.Add(item); }
// TODO:アップロード関連のメソッドのブラッシュアップ #region アップロードメソッド public void HttpRequestUpload(string url, IDictionary<string, string> postData, Encoding enc, string PostName, string fileName, string contentType, Action<Stream> invoker) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.Credentials = Credentials; req.CookieContainer = Cookie; if (postData != null) { using (var post = new PostFileData()) { foreach (var line in postData) { post.Add(line.Key, line.Value); } using (var stream = new FileStream(fileName, FileMode.Open)) { post.Add(PostName, stream, (int)stream.Length, Path.GetFileName(fileName), contentType); } req.ContentType = "multipart/form-data; boundary=" + post.Boundary; var data = post.ToBytes(); req.ContentLength = data.Length; try { using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } } catch (WebException) { throw; } } } try { using (WebResponse responce = req.GetResponse()) { if (invoker != null) { using (Stream resStream = responce.GetResponseStream()) { invoker(resStream); } } } } catch (WebException) { throw; } }