有个功能 需要上传文件 如图
我需要上传很多附件 但是吧 因为是复制的行 所以用不了 FileUpload.PostedFile.SaveAs 的功能了 我就想用 FileStream 写文件 。在本机测试是好使的,但是放到
服务器上时 就不对了 具体代码 如下
1 private byte[] Readfile(string filpath)
2 {
3 FileStream fs = new FileStream(filpath, FileMode.Open, FileAccess.Read);
4 BinaryReader rd = new BinaryReader(fs);
5 byte[] buffer = new byte[fs.Length];
6 rd.Read(buffer, 0, (int)fs.Length);
7
8 rd.Close();
9 fs.Close();
10 return buffer;
11
12 }
13
14 private string writefile(string filpath)
15 {
16 string name = "";
17 if (!string.IsNullOrEmpty(filpath))
18 {
19 string typ2 = filpath.Substring(filpath.LastIndexOf(".") + 1);
20
21 name = Common.Rand.Number(20) + "." + typ2;
22
23 FileStream fs = new FileStream(Server.MapPath("~/Files/") + name, FileMode.OpenOrCreate, FileAccess.Write);
24 BinaryWriter rw = new BinaryWriter(fs);
25 byte[] strbyte = Readfile(filpath);
26 rw.Write(strbyte);
27 rw.Close();
28 fs.Close();
29 }
30 return name;
31
32
33 }
提示错误 是
原因是服务器上找不到本机的这个路径 当然报错了
我想知道怎么能让服务器知道是本机的文件的路径呢
佳文:说 用//1.获取上传的文件列表
HttpFileCollection files = HttpContext.Current.Request.Files;
//2.遍历每个文件,进行保存
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile postedFile = files[i];
postedFile.SaveAs(Server.MapPath("~/Files/") + postedFile.FileName);
}
//3.完工,检查Files目录是不是有文件了.
这样弄 但是这样的前提是用asp:Button 控件 这样就会刷新 窗口 页面会把增加的行给清掉
所以 我是用jquery 增加的一行 用ajax 实现的添加数据 就不会被刷新页面 但是上传就不能用 FileUpload.PostedFile.SaveAs 方法了
感觉现在很矛盾 希望各路大牛进来看看
没有分了 有机会请喝酒吧..3q
加到隐藏域吧,用JS给【浏览】按钮加事件,onchange()设置隐藏域为文件路径
怎么能放到服务器呢 最好以二进制流保存到数据库 要下载的话 直接从数据库读出来就行了
不明白你说的服务器上找不到本机路径是什么,如果只是上传文件的话,用得着上传者的本机路径吗?
如果想动态的上传多个文件的话:
html:
<form enctype="multipart/form-data" action="upload.aspx" method="post">
<input type="file" /> //可以用js动态添加多少
<input type="submit" /> //如果不刷新页面就用js阻止提交,并且ajax post过去(注意上面的属性设对)
</form>
upload.aspx:
//1.获取上传的文件列表
HttpFileCollection files = HttpContext.Current.Request.Files;
//2.遍历每个文件,进行保存
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile postedFile = files[i];
postedFile.SaveAs(Server.MapPath("~/Files/") + postedFile.FileName);
}
注:两者可以是同一文件,也可以分别是两个文件。一个文件的话就判断下是get还是post,get就显示html,post就接受与写入文件。