社区
Java EE
帖子详情
sharepoint api
elaine_ying
2007-05-11 09:52:13
我想调用它的接口,实现文件的下载和上传,用java语言,怎么实现啊
...全文
379
1
打赏
收藏
sharepoint api
我想调用它的接口,实现文件的下载和上传,用java语言,怎么实现啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
www203
2007-05-11
打赏
举报
回复
第一部分:
首先我们来说一下如何解决ASP.NET中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改WEB.Config文件来自定义最大文件大小,如下:
<httpRuntime executionTimeout="300" maxRequestLength="40960" useFullyQualifiedRedirectUrl="false"/>这样上传文件的最大值就变成了4M,但这样并不能让我们无限的扩大MaxRequestLength的值,因为ASP.NET会将全部文件载入内存后,再加以处理。解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody和ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据。实现方法如下:
IServiceProviderprovider=(IServiceProvider)HttpContext.Current;
HttpWorkerRequestwr=(HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
byte[]bs=wr.GetPreloadedEntityBody();
.
if(!wr.IsEntireEntityBodyIsPreloaded())
{
intn=1024;
byte[]bs2=newbyte[n];
while(wr.ReadEntityBody(bs2,n)>0)
{
..
}
}这样就可以解决了大文件的上传问题了。
第二部分:
下面我们来介绍如何以文件形式将客户端的一个文件上传到服务器并返回上传文件的一些基本信息
首先我们定义一个类,用来存储上传的文件的信息(返回时需要)。
public class FileUpLoad
{
public FileUpLoad()
{
}
/**//// <summary>
/// 上传文件名称
/// </summary>
public string FileName
{
get
{
return fileName;
}
set
{
fileName = value;
}
}
private string fileName;
/**//// <summary>
/// 上传文件路径
/// </summary>
public string FilePath
{
get
{
return filepath;
}
set
{
filepath = value;
}
}
private string filepath;
/**//// <summary>
/// 文件扩展名
/// </summary>
public string FileExtension
{
get
{
return fileExtension;
}
set
{
fileExtension = value;
}
}
private string fileExtension;
}
另外我们还可以在配置文件中限制上传文件的格式(App.Config):
<?xml version="1.0" encoding="gb2312" ?>
<Application>
<FileUpLoad>
<Format>.jpg|.gif|.png|.bmp</Format>
</FileUpLoad>
</Application>
这样我们就可以开始写我们的上传文件的方法了,如下:
public FileUpLoad UpLoadFile(HtmlInputFile InputFile,string filePath,string myfileName,bool isRandom)
{
FileUpLoad fp = new FileUpLoad();
string fileName,fileExtension;
string saveName;
//
//建立上传对象
//
HttpPostedFile postedFile = InputFile.PostedFile;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
fileExtension = System.IO.Path.GetExtension(fileName);
//
//根据类型确定文件格式
//
AppConfig app = new AppConfig();
string format = app.GetPath("FileUpLoad/Format");
//
//如果格式都不符合则返回
//
if(format.IndexOf(fileExtension)==-1)
{
throw new ApplicationException("上传数据格式不合法");
}
//
//根据日期和随机数生成随机的文件名
//
if(myfileName != string.Empty)
{
fileName = myfileName;
}
if(isRandom)
{
Random objRand = new Random();
System.DateTime date = DateTime.Now;
//生成随机文件名
saveName = date.Year.ToString() + date.Month.ToString() + date.Day.ToString() + date.Hour.ToString() + date.Minute.ToString()
+ date.Second.ToString() + Convert.ToString(objRand.Next(99)*97 + 100);
fileName = saveName + fileExtension;
}
string phyPath = HttpContext.Current.Request.MapPath(filePath);
//判断路径是否存在,若不存在则创建路径
DirectoryInfo upDir = new DirectoryInfo(phyPath);
if(!upDir.Exists)
{
upDir.Create();
}
//
//保存文件
//
try
{
postedFile.SaveAs(phyPath + fileName);
fp.FilePath = filePath + fileName;
fp.FileExtension = fileExtension;
fp.FileName = fileName;
}
catch
{
throw new ApplicationException("上传失败!");
}
//返回上传文件的信息
return fp;
}
然后我们在上传文件的时候就可以调用这个方法了,将返回的文件信息保存到数据库中,至于下载,就直接打开那个路径就OK了。
第三部分:
这里我们主要说一下如何以二进制的形式上传文件以及下载。首先说上传,方法如下:
public byte[] UpLoadFile(HtmlInputFile f_IFile)
{
//获取由客户端指定的上传文件的访问
HttpPostedFile upFile=f_IFile.PostedFile;
//得到上传文件的长度
int upFileLength=upFile.ContentLength;
//得到上传文件的客户端MIME类型
string contentType = upFile.ContentType;
byte[] FileArray=new Byte[upFileLength];
Stream fileStream=upFile.InputStream;
fileStream.Read(FileArray,0,upFileLength);
return FileArray;
}
SharePoint
API
使用
SharePoint
API
自动部署 Web 应用程序
sharepoint
API
初级讲义
作了几年的.net程序员,对
sharepoint
的理解希望能够代码化,因此需要对他的
API
有一定了了解
SharePoint
REST 服务实战教程
本课程基于
SharePoint
Server 2019环境,为大家介绍
SharePoint
的客户端
API
之一的REST服务,让大家从零基础了解REST服务,并且学会如何使用REST服务对
SharePoint
对象进行创建、读取、更新和删除 (CRUD) 操作。...
SharePoint
API
讲解
主要是对
SharePoint
中一些常用的对象模型进行讲解
SharePoint
JavaScript
API
SharePoint
JavaScript
API
Java EE
67,515
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章