今天在winform上需要上传,删除服务器上的文件,网上找了下上传是很多,可删除没有找到答案,,最后只能拿个土办法实现了,这里是用ashx文件来处理
上传:
B/S
public void ProcessRequest(HttpContext context)
{
foreach (string fileKey in context.Request.Files)
{
try
{
HttpPostedFile file = context.Request.Files[fileKey];
string oldFileName = file.FileName; //原文件名 xxx.jpg
int extenIndex = oldFileName.LastIndexOf(".");
string getExtent = oldFileName.Substring(extenIndex);//文件扩展名 .jpg
string fileSize = UploadCommon.getFileSize(file.ContentLength); //获取文件大小
string newFileName = DateTime.Now.ToString("yyyyMMddHHmmssms") + (new Random()).Next(0, 9) + getExtent;
string path = "/AffixFiles/sw_Products/";
if (!Directory.Exists(context.Server.MapPath(path)))
{
Directory.CreateDirectory(context.Server.MapPath(path));
}
string filePath = Path.Combine(path, newFileName);//文件相对路径
file.SaveAs(context.Server.MapPath(filePath));
string json = "{\"status\":\"success\",\"oldFileName\":\"" + oldFileName + "\",\"fileSize\":\"" + fileSize + "\",\"filePath\":\"" + filePath + "\",\"fileType\":\"" + getExtent + "\"}";
context.Response.Write(json);
}
catch
{
string json = "{\"status\":\"error\",\"oldFileName\":\"" + null + "\",\"fileSize\":\"" + null + "\",\"filePath\":\"" + null + "\",\"fileType\":\"" + null + "\"}";
context.Response.Write(json);
}
context.Response.End();
}
}
C/S
private void 上传_Click(object sender, EventArgs e)
{
System.Net.WebClient myWebClient = new System.Net.WebClient();
byte[] b = myWebClient.UploadFile("http://190.160.10.13:8088/ClientUpload/ClientUploadTools.ashx",
"POST", "C:\\1351040562_Download.png");
string returnJson = Encoding.Default.GetString(b);
JavaScriptSerializer json = new JavaScriptSerializer();
uploadMessage result = json.Deserialize<uploadMessage>(returnJson);//最后的返回结果集
}
public class uploadMessage
{
public string oldFileName { get; set; }
public string fileSize { get; set; }
public string filePath { get; set; }
public string fileType { get; set; }
public string status { get; set; }
}
删除:
这里删除就使用了 UploadData方法来处理,太土了,大家有没有更好的办法提供一下哈
B/S
public void ProcessRequest(HttpContext context)
{
try
{
int totalBytes = context.Request.TotalBytes;
if (totalBytes > 0)
{
byte[] readBytes = context.Request.BinaryRead(totalBytes);
string filePath = System.Text.Encoding.Default.GetString(readBytes);
string overFile = context.Server.MapPath(filePath);
if (File.Exists(overFile))
{
try
{
File.Delete(overFile);
context.Response.Write("success");
}
catch
{
context.Response.Write("error");
}
}
}
}
catch
{
context.Response.Write("error");
}
context.Response.End();
}
C/S
/// <summary>/// 删除成功success 删除失败 error
/// </summary>
private void 删除_Click(object sender, EventArgs e)
{
System.Net.WebClient myWebClient = new System.Net.WebClient();
byte[] b = myWebClient.UploadData("http://localhost:2666/ClientUpload/ClientDeleteTool.ashx",
"POST", Encoding.Default.GetBytes("/AffixFiles/sw_Products/2012112211243824388.png"));
string result = Encoding.Default.GetString(b);//返回的结果
}