c#/.net 如何把word文件储存到服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#/.net 如何把word文件储存到服务器相关的知识,希望对你有一定的参考价值。

我要把本地的word文件上传到服务器,是把word文件转换格式塞到数据库(sqlserver)呢?还是直接存到服务器的硬盘里,然后在数据库里存储路径?小弟没有这方面的经验,望高手们给出详细的思路和代码,小弟拜谢!!!
我不知道如何对服务器进行word存取,我现在想把word直接存到sqlserver数据库,该以什么类型存储呢?是varbinary、XML、image还是其它的什么类型?如果先转换成XML类型,图片和表格怎么处理呢?不解,望达人给个详细的思路。。。

用FTP的形式上传即可,不限制文件格式
以下所有需要修改的地方用*表示,先修改掉再用

string serverName = "***.***.***.***"; //写你服务器IP,别直接用。。。
// This example assumes the site uses anonymous logon.
NetworkCredential credentials = new NetworkCredential("anonymous", ""); //写你的FTP用户名密码
DemonstrateWebClient(serverName,credentials,filename,ftpdir);//然后调用上传方法,filename是你想要上传的文件名称,ftpdir是上传到服务器的哪个文件夹中

private static void DemonstrateWebClient(string serverName, NetworkCredential credentials, string filename, string ftpdir)

string serverAddress = "ftp://" + serverName + "/" + ftpdir+"/"; //注意这里的格式,很容易在前面定义错

// Create a new WebClient object and set the credentials.
WebClient webClient = new WebClient();
webClient.Credentials = credentials;

//// Download file.
//try
//
// string fileName = ReadFileName("download");
// string downloadAddress = serverAddress + fileName;
// Console.WriteLine("Downloading file " + downloadAddress);

// // The string passed in should include the URI path that has
// // the file name to be downloaded.
// webClient.DownloadFile(downloadAddress, fileName);
//
//catch (WebException ex)
//
// Console.WriteLine(ex.Message);
//

// Upload file.
try

string fileName = filename;
string uploadAddress = serverAddress + fileName;
//Console.WriteLine("Uploading file " + uploadAddress);
webClient.UploadFile(uploadAddress, "/**/"+fileName);//上传文件所在的本地路径在这里修改

catch (WebException ex)

//Console.WriteLine(ex.Message);
MessageBox.Show(ex.Message, "Upload failed");


参考技术A 你可以这样办!
在数据库中有一个字段叫做long raw可以用于存储word文件的内容。
然后,你在定义一个文件的类型比如word型的就是doc,记事本型的就是txt等等。
存储时,将word内容存储到long raw字段中,文件类型存到另一个字段中。
读取时,先读出内容,然后读取文件的类型格式,然后再显示。

-------------------------------这个能行,我们试过!放心吧!
参考技术B web还是form?
存数据库的话用image类型,是以二进制存的,最大可存2G

FileStream myfilestream = new FileStream("文件地址",FileMode.Open,FileAccess.Read);
int len1 = Convert.ToInt32(myfilestream.Length);
byte[] data = new byte[len1];
myfilestream.Read(data, 0, len1);
myfilestream.Close();

this.sqlOpen();
cmd = "INSERT INTO FileTab (FileDoc) VALUES(@img)";
SqlCommand sqlcmd =new SqlCommand(cmd,conn);
SqlParameter pada = new SqlParameter("@img",SqlDbType.Image);
pada.Value=data;
sqlcmd.Parameters.Add(pada);
sqlcmd.ExecuteNonQuery();本回答被提问者采纳
参考技术C 我建议还是直接存在服务器的好多了,这样会减少很多不必要的麻烦。如果你转换格式存着的话,如果Word里面有图片和表格的话, 那问题就特多了,存数据库一般是要将Word转换为html文件存进去的,而html和图片有是分开为两个文件的····问题多多··
当然存服务器的话,我们就存好路径文件名就OK 了··
参考技术D 可以直接上传

你搜索一下 很简单的

C语言 怎么把文件中的信息储存到结构体数组中

要把这个文件中的数据保存到结构体数组中

我是这么写的

输出为什么是这个

总体写得不错,问题出在你的

fscanf和fprintf函数参数传递错误了

#include "stdio.h"
#include "stdlib.h"
struct s

  int id;
  char name[10];
  int co1;
  int co2;
  int co3;
  int co4;
;
int main()

   int i=0,count;
   struct s st[10];
   char fname[10],ch;
   FILE *infile,*outfile;
   printf("please input data file name:\\n");
   scanf("%s",fname);
   infile=fopen(fname,"r");
   outfile=fopen("output.txt","w");
   if(infile==NULL)
   
     printf("\\nFailed to open the file");
 exit(1);
   
   fscanf(infile,"%d",&count);
   while(i<count)
   
     fscanf(infile,"%d %s %d %d %d %d\\n",&(st[i].id),st[i].name,&(st[i].co1),&(st[i].co2),&(st[i].co3),&(st[i].co4));
 fprintf(outfile,"%d %s %d %d %d %d\\n",st[i].id,st[i].name,st[i].co1,st[i].co2,st[i].co3,st[i].co4);
     i++;
   
   fclose(infile);
   fclose(outfile);

首先,你的name是结构体中的字符数组,fscanf要传入的应该是存储字符的地址,所以直接是数组名name就行


第二,fprintf你要写入文件的数据,应该是真正的数据本身,不是数据的地址,所以应该将变量前的取地址符全去掉就好,


第三,注意加好换行符\\n


结果:

text.txt中内容就是output.txt中的内容

参考技术A 你用了地址运算符&,输出的应该是各个数据的存储地址。

以上是关于c#/.net 如何把word文件储存到服务器的主要内容,如果未能解决你的问题,请参考以下文章

怎么把word转为pdf

如何向Word中写入数据,C#.net

.net C# C/S模式,如何把一个项目封装为dll以便其他项目调用

html 页面怎么转化为word文件

如何编译C/Fortran动态/静态链接库

如何在jsp页面显示word文档内容