2009-08-24 86 views
2

是否有任何多个上传图像易于用户上传图像,如Facebook上的activex文件上传器。c#/ jquery上的多个上传图像

但免费:)

更新我的问题,我看到大家推荐一下Flash上​​传。 我有“使用会话男, 我”的问题中号传递用户相册ID为关系到uploded图像

是上传 图像和用户ID,这是在第一页的代码

<div id="divUploadImage" style="display: none;"> 
        <FlashUpload:FlashUpload ID="flashUpload" runat="server" UploadPage="Upload2.axd" 
         OnUploadComplete="UploadComplete()" FileTypeDescription="Images" FileTypes="*.gif; *.png; *.jpg; *.jpeg" 
         UploadFileSizeLimit="3000000" TotalUploadSizeLimit="40000000" /> 
        <asp:LinkButton ID="LinkButton1" runat="server"></asp:LinkButton> 
       </div> 

,并在第二页上上传火灾后的代码

public void ProcessRequest(HttpContext context) 
     { 

    for (int j = 0; j < context.Request.Files.Count; j++) 
       { 

HttpPostedFile uploadFile = context.Request.Files[j]; 
    SaveImages(uploadFile, "", albumid,out returnPhotoId); // my function to save ,albumId is the session 
       } 
} 

感谢

+0

您的SaveImages文件在哪里保存图像? Uploadify负责将所有文件移动到您指定的目录。你只是在之后移动它们。如果是这样,您可以使用我的.ashx示例第一次保存到正确的位置。我们正在使用此上传器一次上传多个用户的文件,并将这些文件保存在每个用户文件夹中 – 2009-08-24 14:13:47

回答

8

尝试使用uplodify。它也使用闪光灯,我强烈推荐它。这是一款高度定制且免费的产品。

对于张贴到另一个网页上传的所有文件后:

让像这样3个隐藏字段:

<asp:HiddenField runat="server" ID="hdf_UserID" name="hdf_UserID" /> 
<asp:HiddenField runat="server" ID="hdf_AlbumID" name="hdf_AlbumID" /> 
<asp:HiddenField runat="server" ID="hdf_ImageFiles" name="hdf_ImageFiles" /> 

,这里是你如何设置按钮张贴到第二页:

<asp:Button runat="server" ID="btn_Submit" PostBackUrl="YourPage.aspx" /> 

一旦在第二页上可以抢出的信息,像这样的请求:

Request["hdf_UserID"].ToString() 
Request["hdf_AlbumID"].ToString() 
Request["hdf_ImageFiles"].ToString() 

您可以将所有文件存储在隐藏字段中,我会推荐|分隔 那么你可以做一个.split其他页面

上对于uploadify上传的.ahx页:使用您可以将信息传递到第二页的scriptData选项

var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>" 
var user = $('[id$=hdf_UserID]').val(); 
var album = $('[id$=hdf_AlbumID]').val(); 

$('[id$=fileInput]').uploadify({ 
     'uploader': '../Uploadify/uploadify.swf', 
     'script': '../Uploadify/Upload2.ashx', 
     'scriptData': {'Token': auth, 'User': user, 'Album': album}, 

在。的uploadify您可以通过以下获得scriptData ASHX:

string user = context.Request["User"]; 
string album = context.Request["Album"]; 

此代码是uploadify具体的,但希望它会帮助你了解你的

+0

+1看起来不错! – Cleiton 2009-08-24 13:11:15

+0

我使用会话,这是我的问题,使用它,你有什么解决方案? – avnic 2009-08-24 13:18:56

+0

什么具体是你使用的会话? – 2009-08-24 13:20:14

1

其实,它是用Flash完成的。互联网上有很多解决方案。 here是codeproject中的一个。

+0

伟大的思想家们都会这么想吗? – JustLoren 2009-08-24 13:05:55

1

我使用的库位于http://www.codeproject.com/KB/aspnet/FlashUpload.aspx为我的项目。它非常轻巧,适合修改。

基本上,它是一个用Flex编写的多文件上传器。这非常简单,您还可以在需要时打开代码并进行更改。

+0

1+“伟大的思想相似吗?”当然,大声笑。 – Cleiton 2009-08-24 13:11:46

1

我已经成功地使用Uploadify与ASP.NET MVC创建带有自动图像预览功能的多文件上传脚本全部与AJAX内联。需要注意的一点是,如果您在上传操作中使用会话变量被SWFUpload/Uploadify命中,则Flash将获得自己的SessionID以及将Flash上​​载请求放置在Flash会话中的任何内容。

+0

这是我的问题实际上,我使用会话 你有任何解决方案吗? – avnic 2009-08-24 13:17:02

+0

@avnic:这取决于你为什么使用会话。没有办法让闪存启动您的预先存在的会话。解决方法的一个示例可能是将图像存储在与用户标识关联的文件夹中,然后从主会话中检查该文件夹。解决方法实际上取决于您的实施。 – JustLoren 2009-08-24 13:23:12

+0

我同意!为了最好地回答这个问题,我们确实需要更多关于实施的信息。有几种选择可供选择,但只有在了解项目的整个范围后才能给出最佳选择。 – 2009-08-24 13:25:33