C#版的MS MultiPart/Form-Data
来源:互联网 发布:手机淘宝自定义模块 编辑:程序博客网 时间:2024/05/18 04:10
C#版的MsMultiPartFormData(适用于Silverlight平台上传二进流数据到服务器)
在这之前,我已经写过了AS3版本的MsMultiPartFormData,给Flash上传Http的Form用,写过C++版的MultiPartFormData,
给C++的朋友上传Http的Form用。在这里,再写一个C#版本的,呵呵,主要是想给Silverlight用的。
具体代码如何下
(至于Http的multipart/form-data格式,大家还是得去找资料来看看了):
************************************************************
#region summary
/*----------------------------------------------------------------------------
*
*
功能描述:
核心功能是什么
*
*
作
者:
qwliang
*
*
修改日期:
2010/10/10
*----------------------------------------------------------------------------*/
#endregion
using System;
using System.Collections;
using System.Text;
using System.Collections.Generic;
namespaceMyRBS
{
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");
publicMsMultiPartFormData()
{
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";
- C#版的MS MultiPart/Form-Data
- C#版的MsMultiPartFormData(上传二进流数据到服务器 multipart/form-data)
- C#版的MsMultiPartFormData(上传二进流数据到服务器 multipart/form-data)
- 解决multipart/form-data上传的问题
- Enctype=multipart/form-data 的作用
- Enctype=multipart/form-data 的作用
- enctype=“multipart/form-data”的使用
- 关于multipart/form-data
- multipart/form-data
- multipart/form-data
- multipart/form-data
- Multipart/form-data POST
- apiary multipart/form-data
- multipart/form-data
- multipart/form-data
- C#模拟提交表单 post-带附件的表单[multipart/form-data]
- C#模拟提交表单 post-带附件的表单[multipart/form-data]
- 表单form的enctype="multipart/form-data"使用体会
- 脏读、不可重复读、幻读
- 寻找一个字符串中最长的重复子串
- gbd调试 错误 illegal instruction 4
- 图册 -大图显示原理
- HDOJ 1686 Oulipo KMP
- C#版的MS MultiPart/Form-Data
- 全局变量 extern
- 经验及技巧:windows phone 8.1开发图像编码解码
- matrix computation 4th edition solution of 1.1
- jQuery 闭包转载
- 数据库隔离级别
- magento 自己抛异常
- UVA12300-Smallest Regular Polygon
- cookie跨域的问题