jQuery表单插件在错误的位置搜索页面



我使用jQuery Form插件上传文件。这些文件被发送到我的cherrypy脚本,然后返回到我的jQuery,在那里文件名被附加到我的页面上。系统在本地主机上运行良好。我使用webpartition作为网络主机,当我尝试使用表单插件上传文件时,我在jQuery错误日志中收到以下错误:

2013/11/24 16:41:26[错误]26628#0:*22912993 open()"/home/mywebsite/webapps/htdocs/submit"失败(2:没有这样的文件或目录),客户端:5.100.131.14,服务器:mywebsite.webfactonal.com,请求:"POST/submit HTTP/1.1",主机:"mywebsite/webfactonal.com",引用人:"http://mywebsite.webfactional.com/freelinreg"

奇怪的是,它试图在"/home/mywebsite/webapps/htdocs/submit"中打开提交文件,但该文件不存在。根据我下面的代码,cherrypy通常会在"http://mywebsite.webfactional.com/freelinreg/submit"或在我的计算机上运行时为'localhost:8080/submit'。

有没有办法将jQuery Form插件指向"/submit"http://mywebsite.webfactional.com/freelinreg/submit而不是在"/home/mywebsite/webapps/htdocs/submit"?

类根(对象):

@cherrypy.expose
def index(self)
    return open('/home/joestox/webapps/freelinreg_static/index.html')
@cherrypy.expose
def submit(self, myfile):
    cherrypy.session['myfile'] = myfile
    data_name = myfile.filename
    #Send back to JQuery with Ajax
    #Put in JSON form
    data_name= json.dumps(dict(title = data_name))
    cherrypy.response.headers['Content-Type'] = 'application/json'
    return data_name

HTML:

<!DOCTYPE html>
    <html>
        <head> 
            <script type='text/javascript' src='freelinreg_static/google.js'></script>
            <script type='text/javascript' src='freelinreg_static/frontend.js'></script>
            <script type='text/javascript' src='freelinreg_static/malsup.js'></script>
        </head>
        <body>
        <form id="dataform" action="submit" method="post" enctype="multipart/form-data">
            <input type="file" name="myfile" id="myFile"/>
            <input type="submit" id="data_submit" value="Continue"/>
        </form>                          
        </body>
    </html>

jQuery(frontend.js):

$(document).ready(function () {
    (function () {
        $('#dataform').ajaxForm({
            success: function (data) {
                var $a_var = data['title'];
                $('body').append($a_var);
            }
        });
        return false;
    })();
});
jwalker是正确的。你混淆了url路径和物理路径。你的cherrypy应用程序需要在你的系统上有一个物理位置来存储文件。I、 另外,不要看到你试图在任何地方保存上传的文件。
@cherrypy.expose
def submit(self, myfile):
    cherrypy.session['myfile'] = myfile
    data_name = myfile.filename
    upload_path = '/home/mywebsite/webapps/submit' + myfile.filename
    size = 0
    all_data = bytearray()
    while True:
        data = myfile.file.read(8192)
        all_data += data
        if not data:
            break
         size += len(data)
    saved_file=open(upload_path, 'wb') 
    saved_file.write(all_data) 
    saved_file.close()
    #Send back to JQuery with Ajax
    #Put in JSON form
    data_name= json.dumps(dict(title = data_name))
    return data_name

此外,看起来您希望用户能够查看该文件。如果是这样的话,你还需要为cherrypy打开静态浏览(如果你没有提供静态内容的网络服务器)。

cherrypy.config.update({'tools.staticdir.on': True,
                'tools.staticdir.dir': '/home/mywebsite/webapps/submit'
               })

希望这能有所帮助!

最新更新