PDF文件上传下载!~高手进。。!

CalvinDo 2010-04-12 03:51:11
我想实现类似CSDN下载频道的功能。界面上显示几个资源名称。点击某个资源。显示出资源的相关信息(大小,上传人,标签什么的。。。) .
效果:http://download.csdn.net/

目前实现功能:上传文件到Web\files下。


思维混乱,。。求 高人指点。。。
只要清晰的。。。!!!
...全文
225 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-04-12
  • 打赏
  • 举报
回复
fileuoload上传,获取相关信息
string FileName = PostedFile.FileName;
string AttachExt = FileName.Substring(FileName.LastIndexOf(".") + 1);
int TotalSize = PostedFile.ContentLength;

string path = Server.MapPath("~/") + “”;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.GetEncoding("utf-8")));
Response.ContentType = "application/octet-stream";
Response.WriteFile("" + path + "");
Response.End();
fgh0302 2010-04-12
  • 打赏
  • 举报
回复
刚 接触的 ftp 上传 下载 不知对楼主是否有帮助


using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net;
using System.IO;
public partial class Default3 : System.Web.UI.Page
{
string ftpServerIP = "192.168.1.120";
string ftpUserID = "admin_gc";
string ftpPassword = "gcftpadmin";
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
string filepath = FileUpload1.PostedFile.FileName;//路径+文件名
string lujing = filepath.Substring(0, filepath.LastIndexOf("\\") + 1);//路径
string filename = Path.GetFileName(filepath);//得文件名
//Upload(filepath);
//Download(lujing, filename);
}
private void Upload(string filename)
{
FileInfo fileInf = new FileInfo(filename);
string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
FtpWebRequest reqFTP;

// 根据uri创建FtpWebRequest对象
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));

// ftp用户名和密码
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

// 默认为true,连接不会被关闭
// 在一个命令之后被执行
reqFTP.KeepAlive = false;

// 指定执行什么命令
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;

// 指定数据传输类型
reqFTP.UseBinary = true;

// 上传文件时通知服务器文件的大小
reqFTP.ContentLength = fileInf.Length;

// 缓冲大小设置为2kb
int buffLength = 2048;

byte[] buff = new byte[buffLength];
int contentLen;

// 打开一个文件流 (System.IO.FileStream) 去读上传的文件
FileStream fs = fileInf.OpenRead();
try
{
// 把上传的文件写入流
Stream strm = reqFTP.GetRequestStream();

// 每次读文件流的2kb
contentLen = fs.Read(buff, 0, buffLength);

// 流内容没有结束
while (contentLen != 0)
{
// 把内容从file stream 写入 upload stream
strm.Write(buff, 0, contentLen);

contentLen = fs.Read(buff, 0, buffLength);
}

// 关闭两个流
strm.Close();
fs.Close();
}
catch (Exception ex)
{
throw ex;
}
}
protected void Button2_Click(object sender, EventArgs e)
{
string filepath="ftp://192.168.1.120/test.txt";
string time = System.DateTime.Now.ToLongTimeString();
Download(filepath);
}
private void Download(string filePath)
{
string fileName = filePath.Substring(filePath.LastIndexOf("/") + 1);
FtpWebRequest reqFTP;

try
{
FileStream outputStream = new FileStream("d:\\" + fileName, FileMode.Create);

reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(filePath));

reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;

reqFTP.UseBinary = true;

reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

Stream ftpStream = response.GetResponseStream();

long cl = response.ContentLength;

int bufferSize = 2048;

int readCount;

byte[] buffer = new byte[bufferSize];

readCount = ftpStream.Read(buffer, 0, bufferSize);

while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);

readCount = ftpStream.Read(buffer, 0, bufferSize);
}

ftpStream.Close();

outputStream.Close();

response.Close();
}
catch (Exception ex)
{
throw ex;
}
}

}
CalvinDo 2010-04-12
  • 打赏
  • 举报
回复

谢谢楼上的回答。。
好久没这么傻了。。
wosizy 2010-04-12
  • 打赏
  • 举报
回复
CalvinDo 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 calvindo 的回复:]
引用 12 楼 wiki14 的回复:
有很多方法,
比如,你可以存文件名(这个可以自己给重命名为日期的形式),
然后保存的时候,放入文件夹,读取的时候,找到文件夹+文件名即可。

当然你也可以把全目录存到数据库中,然后直接把这个信息给读出来就可以了。

还有个很白痴的问题。model_products.ProductContent = ?(怎么获取Web\files\PL1500.……
[/Quote]

谁告诉我啊
jzcldy 2010-04-12
  • 打赏
  • 举报
回复
upupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupupv

S314324153 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gui0605 的回复:]
大小、上传人、标签、文件路径这些存入数据库,从数据库读取出来显示,下载就把页面上的链接指定到文件的路径去就可以了
[/Quote]

存储路径也可以写在数据库里
CalvinDo 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wiki14 的回复:]
有很多方法,
比如,你可以存文件名(这个可以自己给重命名为日期的形式),
然后保存的时候,放入文件夹,读取的时候,找到文件夹+文件名即可。

当然你也可以把全目录存到数据库中,然后直接把这个信息给读出来就可以了。
[/Quote]
还有个很白痴的问题。model_products.ProductContent = ?(怎么获取Web\files\PL1500.pdf
GT7466 2010-04-12
  • 打赏
  • 举报
回复

System.IO.FileInfo fi = new FileInfo("file.pdf");
Response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(fi.Name));
Response.AddHeader("Content-Type", "application/octet-stream");
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.WriteFile(fi.FullName);
Response.End();
gui0605 2010-04-12
  • 打赏
  • 举报
回复
<a href="http://www.xxxx.com/web/files/xxxx.pdf">下载</a>
wiki14 2010-04-12
  • 打赏
  • 举报
回复
有很多方法,
比如,你可以存文件名(这个可以自己给重命名为日期的形式),
然后保存的时候,放入文件夹,读取的时候,找到文件夹+文件名即可。

当然你也可以把全目录存到数据库中,然后直接把这个信息给读出来就可以了。
CalvinDo 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wiki14 的回复:]
理清思绪,

从数据库开始,
记录大小,上传人,标签,路径(看你是直接写文件入库,还是记录路径),时间等等。
上传添加记录,显示的时候读出来路径,放在一个标签中,然后给相对路径点击就可以下载咯?
[/Quote]

还有就是村路径,是什么样路径,类似Web\files\PL1500.pdf 这样么?
CalvinDo 2010-04-12
  • 打赏
  • 举报
回复
Web\files
我文件是存在这个里面的
CalvinDo 2010-04-12
  • 打赏
  • 举报
回复
然后给相对路径点击就可以下载咯?



我给个什么路径?
wiki14 2010-04-12
  • 打赏
  • 举报
回复
理清思绪,

从数据库开始,
记录大小,上传人,标签,路径(看你是直接写文件入库,还是记录路径),时间等等。
上传添加记录,显示的时候读出来路径,放在一个标签中,然后给相对路径点击就可以下载咯?

CalvinDo 2010-04-12
  • 打赏
  • 举报
回复
说清楚点,,谢谢。
我新手。。
  • 打赏
  • 举报
回复
可以存完成的 文件路径,比如 xxx/yyyy.rar ,或者,只存文件名, 下载页面,来组合 字符串
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gui0605 的回复:]
大小、上传人、标签、文件路径这些存入数据库,从数据库读取出来显示,下载就把页面上的链接指定到文件的路径去就可以了
[/Quote]

对头
CalvinDo 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gui0605 的回复:]
大小、上传人、标签、文件路径这些存入数据库,从数据库读取出来显示,下载就把页面上的链接指定到文件的路径去就可以了
[/Quote]
路径也存进数据库?

下载就把页面上的链接指定到文件的路径去就可以了
这句话我有点不懂了
itliyi 2010-04-12
  • 打赏
  • 举报
回复
沙发居然被占了
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧