关键在於,你上传的文件是保存在数据库中,还是保存在服务器的硬盤上
保存在数据库中要化成二进制流,但缺点是文件大的时候,数据库很麻烦,并且写进数据库要转换,读出来也要转化
如果保存在服务器上,只在数据库中保存路径,然後就可以根据路径来下载,
删除的时候,也同样根据路径要删除服务器上的文件和数据库中的文件信息
祝你好运,如何你不明白的话,我可以给你源码看一下,之前我做的上传,下载和删除功能。
可以这样,button里写 window.open('xxx.php?fileName=aaaa'),然后这个php文件里根据这个fileName找到对应文件,然后在这个页面以文件流的形式输出到浏览器端,这样会生成保存文件对话框
我是搞C#的,C#的文件流输出到浏览器代码如下
stream = File.Open(filePathName, FileMode.Open, FileAccess.Read)byte[] data = new byte[stream.Length]
int result = stream.Read(data, 0, data.Length)
if (!File.Exists(filePathName))
return
HttpContext.Current.Response.Buffer = true
HttpContext.Current.Response.Charset = Encoding.UTF8.ToString()
HttpContext.Current.Response.AddHeader("Content-Disposition", "inlinefilename=" + Server.UrlEncode(fileName))
HttpContext.Current.Response.AddHeader("Content-Length", data.Length.ToString())
HttpContext.Current.Response.ContentType = "application/ms-excel"
stream.Close()
File.Delete(filePathName)
Response.BinaryWrite(data)
HttpContext.Current.ApplicationInstance.CompleteRequest()
没有,如果想要d出文件另存为的框,需要在server端进行如下设置header:(假设下载的是一个word文档,别的格式可以百度搜索http content-type)
Content-type: application/msword
Content-Disposition: attachmentfilename=test.doc
在php里面就是
header('Content-type: application/msword')
header('Content-Disposition: attachmentfilename=test.doc ')
这样浏览器会自动识别并d出对话框
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)