我无法使send_file(Model.attachment.path)工作.它不会失败,相反,它会向客户端发送一个0字节大小的文件,但文件名是正确的.
在我从Rails 2.3.8迁移到3之后,这个问题开始发生了.
此次迁移中还发生了很多其他事情,我会尽力详细说明所有这些事情.
我通过ftp移动附件,因为它们不是我的git存储库的一部分,因此它们通过cap deploy发布,而不是手动ftp远程(RHEL5)到本地(Win7)然后本地(Win7)到远程(Ubuntu10).
我知道FTPing不会通过传输保留文件权限,所以我所做的就是模仿我之前服务器上看到的chmod,因此它们几乎相同.(用户/组不同,设置为root:root而不是olduser:olduser).
从生产日志下载附件的请求的片段.
Started GET "/attachments/replies/1410?1277105698" for 218.102.140.205 at 2010-09-16 09:44:31 +0000
Processing by AttachmentsController#replies as HTML
Parameters: {"1277105698"=>nil, "id"=>"1410"}
Sent file /srv/app/releases/20100916094249/attachments/replies/UE0003-Requisition_For_Compensation_Leave.doc (0.2ms)
Completed 200 OK in 78ms
Run Code Online (Sandbox Code Playgroud)
一切都还好.我还要排除本地问题,我尝试在Win7和Ubuntu(在Vbox上)通过Chrome下载.
我还要向你保证,这条道路确实是正确的.
root@li162-41:/srv/app/current# tail /srv/app/releases/20100916094249/attachments/replies/UE0003-Requisition_For_Compensation_Leave.doc
#
#
%17nw
HQ??+1ae????
%33333333333(??QR???HX?"%%??@9
??@?p4??#P@??Unknown????????????G??z ?Times New Roman5??Symbol3&?
?z ?Arial5&?
Run Code Online (Sandbox Code Playgroud)
总结一下这个问题,如何让send_file实际发送文件而不是假的0字节垃圾.
我有一个xml文件,它将在资产或res文件夹中,我需要通过添加一些值来修改,然后我需要将xml转换为一个字符串,作为soap请求的一部分发送.实现这一目标最简单的方法是什么?
我有一个ListView显示新闻项目.它们包含图像,标题和一些文本.图像被加载到一个单独的线程(带有队列和所有)中,当下载图像时,我现在调用notifyDataSetChanged()列表适配器来更新图像.这是有效的,但是getView()因为notifyDataSetChanged()调用getView()了所有可见的项目而被过于频繁地调用.我想只更新列表中的单个项目.我该怎么做?
我目前使用的方法存在的问题是:
我正在寻找建立一个在线商店.然而,第一个问题,超过商店的想法,是平台.我以前使用过Java和PHP,对PHP非常熟悉.所以我的第一个考虑因素是Drupal或CodeIgniter(我听过很多好事)
在与朋友讨论时,他们建议Django.但我没有使用Python或Django的经验.
所以我的问题是,CI更好还是Drupal?而且,如果不是其中任何一个,Django在易于开发和可扩展性方面是否更好?
请求你不要把它变成一场php与python的战斗,因为我在这里寻求建议.谢谢
编辑:有关该项目的更多信息:
该项目旨在为某些目前尚未在线销售的产品创建网上商店.商店将提供产品的高分辨率图像和其他相关细节.与产品相关的一些其他特殊功能将及时添加,因此它们并不重要.
另一个澄清:我理解Drupal是一个CMS,而不是一个框架.我将它与CI进行比较的唯一原因是由于基础平台 - php.也许更好的比较是Joomla vs Django(但我不确定,因为我对这两者都知之甚少)
php python frameworks web-applications content-management-system
如果我尝试调用我的扩展方法,其定义如下:
Module LinqExtensions
<System.Runtime.CompilerServices.Extension()> _
Public Function ToSortableBindingList(Of TSource)(ByVal source As IEnumerable(Of TSource)) As IBindingList
If (source Is Nothing) Then
Throw New ArgumentNullException("source")
End If
Return New SortableBindingList(Of TSource)(New List(Of TSource)(source))
End Function
End Module
Run Code Online (Sandbox Code Playgroud)
通过电话
Dim sss As String()
sss.AsEnumerable.ToSortableBindingList()
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误"ToSortableBindingList不是System.Collections.Generic.IEnumerable(Of String)的成员".
注意:智能感知在最后一段时间后自动完成!如果我尝试调用context.TestTable.AsEnumerable.ToSortableBindingList(TestTable是一个纯EF4生成的类),它甚至不会显示intellisense.我不明白为什么.扩展方法声明"ByVal source As IEnumerable(Of TSource)"有什么问题?
好的,为了澄清发生了什么,我想提供一些额外的信息.我可以追踪到以下问题:
场景:
Assembly1(根名称空间"myapp"):
...
<System.Runtime.CompilerServices.Extension()> _
Public Function ToTest(ByVal source As String) As String
Return ""
End Function
...
Run Code Online (Sandbox Code Playgroud)
'来电作品:
...
Dim a as string
a.ToTest()
...
Run Code Online (Sandbox Code Playgroud)
Assembly2 :(包括对Assembly1的参考)
'呼叫不起作用:
imports …Run Code Online (Sandbox Code Playgroud) 我想从多个客户端子进程的TLS TCP套接字中将数据从客户端发送到服务器,因此我与所有子进程共享相同的ssl套接字.通信适用于一个子进程,但如果我使用多个子ssl.SSLError进程,则TLS服务器崩溃(SSL3_GET_RECORD:解密失败或错误记录mac).
更具体:它不依赖于哪个进程首先调用该SSLSocket.write()方法,但此进程是此时唯一可以调用它的进程.如果另一个进程调用write(),服务器将导致上述异常.
我使用了这个基本代码:
tlsserver.py
import socket, ssl
def deal_with_client(connstream):
data = connstream.read()
while data:
print data
data = connstream.read()
connstream.close()
bindsocket = socket.socket()
bindsocket.bind(('127.0.0.1', 9998))
bindsocket.listen(5)
while True:
newsocket, fromaddr = bindsocket.accept()
connstream = ssl.wrap_socket(newsocket,
server_side=True,
certfile="srv.crt",
keyfile="srv.key",
ssl_version=ssl.PROTOCOL_TLSv1)
deal_with_client(connstream)
Run Code Online (Sandbox Code Playgroud)
tlsclient.py
import socket, ssl
import multiprocessing
class SubProc:
def __init__(self, sock):
self.sock = sock
def do(self):
self.sock.write("Test")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = ssl.wrap_socket(s)
ssl_sock.connect(('127.0.0.1', 9998))
print "Connected to", repr(ssl_sock.getpeername())
for x …Run Code Online (Sandbox Code Playgroud) 使用SoapUI,可以将Soap XML消息发送到WCF服务.我有以下SOAP消息:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:my="http://myserviceprovider">
<soap:Header/>
<soap:Body>
<my:ProcessOrder>
<my:Orders>
<my:Order>
<my:id>randomid_1234567890</my:id>
<my:data>ABC</my:data>
</my:Order>
</my:Orders>
</my:ProcessOrder>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
因为WCF服务需要my:id的唯一ID ,所以我想知道SoapUI是否提供自动生成随机GUID的功能?
我在这里遇到了一个奇怪的问题,VS2005和2010都有.我有一个for循环,其中调用了一个内联函数,本质上是这样的(C++,仅用于说明目的):
inline double f(int a)
{
if (a > 100)
{
// This is an error condition that shouldn't happen..
}
// Do something with a and return a double
}
Run Code Online (Sandbox Code Playgroud)
然后是另一个函数的循环:
for (int i = 0; i < 11; ++i)
{
double b = f(i * 10);
}
Run Code Online (Sandbox Code Playgroud)
现在发生的事情是,在调试构建中一切正常.在发布所有优化的发布版本中,这是根据反汇编编译的,因此i直接使用而没有* 10和比较a > 100变成a > 9,而我想它应该是a > 10.你有什么线索可以让编译器认为这a > 9是正确的方法吗?有趣的是,即使是周围代码中的微小更改(例如调试打印输出)也会使编译器使用i * 10并将其与文字值100进行比较.
我知道这有点模糊,但我会感激任何旧想法.
编辑:
这是一个有希望可重复的案例.我不认为它太大而不能粘贴在这里,所以这里有:
__forceinline int …Run Code Online (Sandbox Code Playgroud) 该upcase方法将整个字符串大写.
我只需要把第一个字母大写.
另外,我需要支持几种流行语言,如德语和俄语.
我该怎么做?