C#版本的
的MsMultiPartFormData,给Flash上传Http的Form用,主要是想给Silverlight用的。具体代码如何下(至于Http的multipart/form-data格式,大家还是得去找资料来看看了):Content-Type: multipart/form-data; boundary=---------------------------8db1851cd90877
然后调用这个类即可,举例:
先定义一个类:
- public class MsMultiPartFormData
- {
- private List<byte> formData;
- public String Boundary = "---------------------------7db1851cd1158";
- private String fieldName = "Content-Disposition: form-data; name=\"{0}\"";
- private String fileContentType = "Content-Type: {0}";
- private String fileField = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"";
- private Encoding encode = Encoding.GetEncoding("UTF-8");
- public MsMultiPartFormData()
- {
- formData = new List<byte>();
- }
- public void AddFormField(String FieldName, String FieldValue)
- {
- String newFieldName = fieldName;
- newFieldName = string.Format(newFieldName, FieldName);
- formData.AddRange(encode.GetBytes("--" + Boundary + "\r\n"));
- formData.AddRange(encode.GetBytes(newFieldName + "\r\n\r\n"));
- formData.AddRange(encode.GetBytes(FieldValue + "\r\n"));
- }
- public void AddFile(String FieldName, String FileName, byte[] FileContent, String ContentType)
- {
- String newFileField = fileField;
- String newFileContentType = fileContentType;
- newFileField = string.Format(newFileField, FieldName, FileName);
- newFileContentType = string.Format(newFileContentType, ContentType);
- formData.AddRange(encode.GetBytes("--" + Boundary + "\r\n"));
- formData.AddRange(encode.GetBytes(newFileField + "\r\n"));
- formData.AddRange(encode.GetBytes(newFileContentType + "\r\n\r\n"));
- formData.AddRange(FileContent);
- formData.AddRange(encode.GetBytes("\r\n"));
- }
- public void AddStreamFile(String FieldName, String FileName, byte[] FileContent)
- {
- AddFile(FieldName, FileName, FileContent, "application/octet-stream");
- }
- public void PrepareFormData()
- {
- formData.AddRange(encode.GetBytes("--" + Boundary + "--"));
- }
- public List<byte> GetFormData()
- {
- return formData;
- }
- }
然后调用这个类即可,举例:
- WebRequest request = WebRequest.Create("http://localhost/Test.aspx");
- MsMultiPartFormData form = new MsMultiPartFormData();
- form.AddFormField("devilField", "中国人");
- FileStream file = new FileStream("F:\\\\Devil_Files\\My_File\\devil.jpg", FileMode.Open);
- byte[] bb = new byte[file.Length];
- file.Read(bb, 0, (int)file.Length);
- file.Close();
- form.AddStreamFile("fileUpload", "中国人图片.jpg", bb);
- form.PrepareFormData();
- request.ContentType = "multipart/form-data; boundary=" + form.Boundary;
- request.Method = "POST";
- Stream stream = request.GetRequestStream();
- foreach (var b in form.GetFormData())
- {
- stream.WriteByte(b);
- }
- stream.Close();
- WebResponse response = request.GetResponse();
转自:http://www.cnblogs.com/liangquewei/archive/2011/01/13/1934462.html