一个小小的改动就能搞定,请大大帮我看一下,来看的都有分
下面是我多文件上传的代码:请帮我看一下上传的文件大小为什么都是0,文件内容都不见了,请问这个要如何改?先拜谢~~
public static DataTable upfiles;
public void CreatTable()
{
upfiles = new DataTable( "upfile ");
DataColumn[] keys = new DataColumn[1];
keys[0] = upfiles.Columns.Add( "filename ", typeof(string));
keys[0].AllowDBNull = false;
upfiles.PrimaryKey = keys;
upfiles.Columns.Add( "filestream ", typeof(Stream));
fname.Text = " ";
fname1.Text = " ";
}
/// <summary>
/// 增加附件至列表
/// </summary>
private void AddFile()
{
if (upfiles == null)
{
CreatTable();
}
if (myFile.PostedFile.FileName != " ")
{
string nam = myFile.PostedFile.FileName;
int i = nam.LastIndexOf( "\\ ");
string filename = nam.Substring(i + 1);
if (upfiles.Rows.Find(filename) == null)
{
Stream fstream = myFile.PostedFile.InputStream;
DataRow dr = upfiles.NewRow();
dr[0] = filename;//获取文件名
upfiles.Rows.Add(dr);//增加
ArrayList dc = new ArrayList();
for (int j = 0; j < upfiles.Rows.Count; j++)
{
DataRow df = upfiles.Rows[j];
dc.Add(df[0].ToString());
}
files.DataSource = dc;
files.DataBind();
}
}
}
private void UploadFile()
{
string userId = this.GetSessionState( "userId ");
if (upfiles.Rows.Count > 0)
{
fname.Text = " ";
for (int j = 0; j < upfiles.Rows.Count; j++)
{
DataRow dr = upfiles.Rows[j];
string topath = (this.GetSessionState( "userId ") + "/ ") + dr[0];
string absolutepath = Server.MapPath(topath);
fname.Text += topath.ToString() + "; ";
myFile.PostedFile.SaveAs(absolutepath);
}
}
}
[解决办法]
看了
没看出名堂
哈
[解决办法]
来学习的
[解决办法]
学习
[解决办法]
循环中保存多个文件???如果只有一个file控件,怎么能保存多个文件?
[解决办法]
看了,幫頂!
------解决方案--------------------
if (upfiles.Rows.Count > 0)
{
fname.Text = " ";
for (int j = 0; j < upfiles.Rows.Count; j++)
{
DataRow dr = upfiles.Rows[j];
string topath = (this.GetSessionState( "userId ") + "/ ") + dr[0];
string absolutepath = Server.MapPath(topath);
fname.Text += topath.ToString() + "; ";
myFile.PostedFile.SaveAs(absolutepath);
}
}
我觉得
DataRow dr = upfiles.Rows[j];
string topath = (this.GetSessionState( "userId ") + "/ ") + dr[0];
这两句应该改成
string topath = (this.GetSessionState( "userId ") + "/ ") + upfiles.Rows[j];
[解决办法]
循环出的问题.
[解决办法]
我看了,没看完...
但还是看了...
[解决办法]
看啦不懂
帮楼主 顶下!
[解决办法]
顶了,研究研究先
[解决办法]
應該可以呀,我們看看別人的實例:
1、在AddFile(...)裡,把文件轉成二進制流保存到DataTable:
......
Stream fstream=myFile.PostedFile.InputStream;
.....
dr[2]=fstream;//文件流
2、在UploadFile(...)裡,把二進制流轉成文件
DataRow dr=upfiles.Rows[j];
string topath=Server.MapPath( ".\\ "+dr[0]);
int FileLen=Convert.ToInt32(dr[1]);
byte[] input = new byte[FileLen];
((System.IO.Stream)dr[2]).Read(input, 0, FileLen);
FileStream fw = new FileStream(topath,FileMode.Create,FileAccess.Write);
fw.Write(input,0,FileLen);
fw.Close();
//其中,變量topath存的是服務器上的文件保存路徑。