收缩上传的文件大小(图片)

时间:2011-04-15 20:48:09

标签: c# javascript asp.net upload

我在网上搜索了很多但没有什么.......

我的问题是我想将任何上传文件的实际尺寸减少到特定长度

adnd我不想强迫用户使用特定的ContentLength

ex: -
 上传的文件大小为1mb(或其大小) - >将其减少到500kb

任何帮助......我将不胜感激。

更具体我想只上传图片,如果这会有帮助

4 个答案:

答案 0 :(得分:1)

据我所知,您希望允许用户上传任何大小的文件,但在服务器上处理只收缩文件。并且不要浪费时间和流量上传整个文件。所以我不知道在IIS上接收请求体的过程中是否有干扰的能力,这就是我建议在客户端进行缩减的原因。

为此,您可以使用Silverlight,Flash。 (当然,你不能只使用javascript,因为它无法访问客户端的文件系统)。以下是使用silverlight实现简单文件上传的示例:Link。在上传之前,您需要修改位代码以剪切文件。

另一种变体是尝试使用Plupload。它允许您使用HTML5 Gears,Silverlight,Flash上​​传文件,提供分块上传功能。您可以尝试调查此开源项目,以使其适应您的需求。

(您也可以尝试在发送前在客户端压缩文件)

祝你好运。

答案 1 :(得分:0)

如果我理解你的问题,我认为不可能(或至少那么容易)。当用户将文件上传到您的网站时,该文件实际上是POST数据。如果你使用像Fiddler http://www.fiddler2.com/fiddler2/这样的工具,你可以在那里看到它,Base64编码,如果我没记错的话。因此,用户已经发送了完整的数据。

我看到你用asp.net标记了你的问题,所以,此时asp.net正在查看请求,检查发布的长度与允许的最大大小(在web.config中配置)并拒绝如果在你被允许看到它之前太久了(我已经尝试过)。

我认为你可以做的最好(如果这是你真正需要做的)将你的web配置中的maxRequestLength设置为足够大的值,不会被拒绝,然后自己截断数据。

<configuration>
    <system.web>
        <httpRuntime maxRequestLength="32768" />
    </system.web>
</configuration>

答案 2 :(得分:0)

你可以增加最大值。通过将以下部分添加到web.config

来上传尺寸
<system.web>
   <httpRuntime  maxRequestLength="102400" executionTimeout="360"/>
</system.web>

102400 == 1GB

答案 3 :(得分:0)

将文件转换为字节数组并将其拆分为首选大小的多个字节数组。如果需要,稍后将这些数组写入多个不同的文件中。

相关问题